操作系统: Windows7/Windows10 64位
运行环境: Visual Studio 10
文件编码: Unicode
编程思路:
设置自启动:
1、定义注册表项HKEY heky;
2、通过RegOpenKeyEx函数打开电脑的启动项;
3、通过GetModuleFileName函数获取本软件的全路径;
4、通过RegSetValueEx函数添加注册表项;
取消自启动:
1、通过RegOpenKeyEx函数打开电脑的启动项;
2、通过RegDeleteValue函数删除注册表项;
void CXXXDlg::Autostart() { m_uCheckState = !m_uCheckState;//BOOL类型的成员变量 HKEY hKey; //找到系统的启动项 CString lpRun = _T("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run"); if(m_uCheckState) { //打开启动项Key long lRet = RegOpenKeyEx(HKEY_CURRENT_USER, lpRun, 0, KEY_ALL_ACCESS, &hKey); if(lRet == ERROR_SUCCESS) { TCHAR pFileName[MAX_PATH] = {0}; //得到程序自身的全路径 DWORD dwRet = GetModuleFileName(NULL, pFileName, MAX_PATH); TRACE(pFileName); //添加一个子Key,并设置值 // 下面"Demo"是应用程序名字(不需要加后缀.exe) lRet = RegSetValueEx(hKey, _T("Demo"), 0, REG_SZ, (LPBYTE)pFileName, (lstrlen(pFileName) + 1)*sizeof(TCHAR)); //关闭注册表 RegCloseKey(hKey); if(lRet != ERROR_SUCCESS) { MessageBox(_T("系统参数错误,设置自启动失败!"),_T("提示")); } else { MessageBox(_T("开机启动设置成功!"), _T("提示")); } } else { MessageBox(_T("系统参数错误,设置自启动失败!"),_T("提示")); } } else { long lRet = RegOpenKeyEx(HKEY_CURRENT_USER, lpRun, 0, KEY_ALL_ACCESS, &hKey); if(lRet == ERROR_SUCCESS) { RegDeleteValue(hKey, _T("Demo")); //关闭注册表 RegCloseKey(hKey); MessageBox(_T("关闭开机启动成功!"), _T("提示")); } } }
参考文章:
点击链接:VS2013/MFC基于对话框编程:[16]开机自启动
点击链接:MFC设置开机启动