操作系统: 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]开机自启动