本人目前菜鸟级选手,只是想把学到的一点知识与大家进行分享,如有说的不正确的地方还请各位大神多多指点,本人非常乐意去学习。
本文内容如有从网上搜到的会提示说明并标注原地址。下面正文,
关于实现开机自启动的功能,大家首先想到的就是使用注册表去实现,这也是比较理想的方法。的确,注册表开机自启动确实给人很专业的感觉,但是不得不注意一点,如果你写的软件是针对win7的时候你不得不考虑一下UAC权限的问题。
先给大家贴一下关于如何把你的程序启动项加到注册表的代码吧。
void OnBnClickedCheckAutorun(bool _bAutoStart)
{
char cFilePath[255] = {0};
HMODULE hFilePath = GetModuleHandle(NULL);
//得到当前执行文件的全路径
GetModuleFileName(hFilePath, cFilePath, sizeof(cFilePath));
if (_bAutoStart)
{
//设置开机启动
//打开注册表
HKEY hKey;
iRet = RegOpenKeyEx(HKEY_LOCAL_MACHINE,
"Software\\Microsoft\\Windows\\CurrentVersion\\Run", 0, KEY_SET_VALUE, &hKey );
if (iRet != ERROR_SUCCESS)
{
return ;
}
//写入注册表
iRet = RegSetValueEx(hKey, "文件名", 0, REG_SZ, (BYTE*)(LPCSTR)cFilePath, sizeof (cFilePath));
//关闭注册表
RegCloseKey(hKey);
}
else
{
//取消设置开机启动
//打开注册表
HKEY hKey;
iRet = RegOpenKeyEx(HKEY_LOCAL_MACHINE,
"Software\\Microsoft\\Windows\\CurrentVersion\\Run", 0, KEY_SET_VALUE, &hKey );
if (iRet != ERROR_SUCCESS)
{
return ;
}
//删除注册表中内容
iRet = RegDeleteValue(hKey, "文件名");
if (iRet != ERROR_SUCCESS)
{
return ;
}
//关闭注册表
RegCloseKey(hKey);
}
}