VS2013/MFC基于对话框编程:[16]开机自启动
1、打开一个已经创建好的项目,我以上篇经验中写到的项目为基础,在对话框上添加一个复选框。功能:选中复选框则软件会自启动,否则取消自启动。
2、修改复选框ID为IDC_AutoStart,添加变量CButton m_autoStart;双击复选框自动生成函数OnBnClickedAutostart。
3、编辑函数OnBnClickedAutostart以实现自启动或取消自启动;这个功能需要修改注册表:1、定义注册表项HKEY heky;2、通过RegOpenKe烤恤鹇灭yEx函数打开电脑的启动项;3、通过GetModuleFileName函数获取本软件的全路径;4、通过RegSetValueEx函数添加注册表项;取消自启动:1、通过RegOpenKeyEx函数打开电脑的启动项;2、通过RegDeleteValue函数删除注册表项;
4、程序代码:void CDemoDlg::OnBnClickedAutostart(){ // TODO: 在此添加控件通知处理程序代码 HKEY hKey; CString strRegPat茑霁酌绡h = _T("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run"); //找到系统的启动项 if (m_autoStart.GetCheck()) { if (RegOpenKeyEx(HKEY_CURRENT_USER, strRegPath, 0, KEY_ALL_ACCESS, &hKey) == ERROR_SUCCESS) //打开启动项 { TCHAR szModule[MAX_PATH]; GetModuleFileName(NULL, szModule, MAX_PATH);//得到本程序自身的全路径 RegSetValueEx(hKey, _T("Demo"), 0, REG_SZ, (LPBYTE)szModule, (lstrlen(szModule) + 1)*sizeof(TCHAR)); //添加一个子Key,并设置值,"Demo"是应用程序名字(不加后缀.exe) RegCloseKey(hKey); //关闭注册表 } else { AfxMessageBox(_T("系统参数错误,不能随系统启动")); } } else { if (RegOpenKeyEx(HKEY_CURRENT_USER, strRegPath, 0, KEY_ALL_ACCESS, &hKey) == ERROR_SUCCESS) { RegDeleteValue(hKey, _T("Demo")); RegCloseKey(hKey); } }}测试程序,启动调试。
5、勾选“自启动”复选框,此时如果电脑带有360安全卫士的话,会弹框提示有用户在修改启动项。这里只要选择信任就行,同时说明了自启动功能已经成功加入到程序中,以后需要删除的时候只需去掉复选框选中状态即可。怎么样,是不是立马感觉自启动也不是什么了不起的功能。
6、win+R运行regedit打开注册表,查看注册表:HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run可以看到新添加的注册表项项