一、需求
本文实现MFC程序的开机自动启动功能。
二、设计
开机自动启动,可以通过注册表实现。在Run
节点下,新建一个字段,包括程序名称、完整的路径。如果要取消自动启动,则删除该字段即可。
三、编码
代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| 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; }
|