一、需求
本文實現MFC程序的開機自動啓動功能。
二、設計
開機自動啓動,可以通過註冊表實現。在Run
節點下,新建一個字段,包括程序名稱、完整的路徑。如果要取消自動啓動,則刪除該字段即可。
三、編碼
代碼如下:
int SetAutorun(BOOL nEnable)
{
// 獲取程序路徑
CString sPath;
GetModuleFileName(NULL, sPath.GetBufferSetLength(MAX_PATH + 1), MAX_PATH);
char lpPath[MAX_PATH] = {0};
strcpy_s(lpPath, (const char*)sPath.GetBuffer());
HKEY hkey;
DWORD dwLen = MAX_PATH;
int ret = -1;
// 注意,不能使用HKEY_LOCAL_MACHINE,權限不夠
ret = RegOpenKeyEx(HKEY_CURRENT_USER,
_T("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run\\"),
0, KEY_WRITE, &hkey);
if (ret != ERROR_SUCCESS)
{
return -1;
}
if (nEnable)
{
RegSetValueEx(hkey, _T("MyTest"), 0, REG_SZ, (CONST BYTE *)sPath.GetBuffer(), dwLen);
}
else
{
RegDeleteValue(hkey, _T("MyTest"));
}
RegCloseKey(hkey);
return 0;
}