设置程序开机自启
[編輯] [转简体] (简体译文)
|
作者:huidong
| 分類:【編程】Win32
[
7 瀏覽
0 評論
1 贊
1 踩
]
概要
修改注册表使程序开机自动启动(或其它程序)
正文
获取程序自身路径详见http://huidong.xyz/?mode=2&id=172
把这个开机自启动的代码做成了一个函数,复制代码后直接调用即可,上码:
//要添加这两个头文件,缺一不可 #include <windows.h> #include <winuser.h> void HKRunator() { //获取程序路径 char programName[100]; GetModuleFileName(NULL, programName, 100); //调用win api 获得路径 //获取程序路径 -- 结束 HKEY hkey = NULL; DWORD rc; rc = RegCreateKeyEx(HKEY_LOCAL_MACHINE, //创建一个注册表项,如果有则打开该注册表项 "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", 0, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hkey, NULL); if (rc == ERROR_SUCCESS) { rc = RegSetValueEx(hkey, "MyApp", /* 改为你的程序名称 */ 0, REG_SZ, (const BYTE *)programName, strlen(programName)); if (rc == ERROR_SUCCESS) { RegCloseKey(hkey); } } }
注意,程序必须以管理员模式开启,注册表写入才生效
各字符集通用版,需要传入路径参数:
// programName 要设置开机自启的程序路径 // 返回值:表示是否设置成功 bool HKRunator(const TCHAR* programName) { HKEY hkey = NULL; DWORD rc; rc = RegCreateKeyEx(HKEY_LOCAL_MACHINE, //创建一个注册表项,如果有则打开该注册表项 _T("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run"), 0, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hkey, NULL); if (rc == ERROR_SUCCESS) { rc = RegSetValueEx(hkey, _T("YourAppName"), /* 改为你的程序名称 */ 0, REG_SZ, (const BYTE*)programName, lstrlen(programName)); if (rc == ERROR_SUCCESS) { RegCloseKey(hkey); } } else { return false; } return true; }
注意,函数里YourAppName那个字符串的地方,如果设置的是不同的程序开机自启,那么这个YourAppName也不能一样。