前言:
實現開機自啟動的途徑和方式有很多種,其中修改注冊表方式應用最為廣泛。注冊表相當是操作系統的數據庫,記錄着系統中方方面面的數據,其中也不乏直接或間接導致開機自啟動的數據。
實現原理:
windows提供了專門的開機自啟動注冊表。在每次開機完成后,它都會在這個注冊表鍵下遍歷鍵值,以獲取鍵值中的程序路徑,並創建進程啟動程序。所以,只需要在這個注冊表鍵下添加想要設置自啟動程序的路徑就可以了。其中常見的兩個路徑,分別是 HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run 與 HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run
注意:要修改HKEY_LOCAL_MACHINE主鍵的注冊表,這要求程序要有管理員權限。而修改HKEY_CURRENT_USER主鍵的注冊表,只需要用戶默認權限就可以實現
實現代碼:
BOOL Reg_CurrentUser(char *lpszFileName, char *lpszValueName) { // 默認權限 HKEY hKey; // 打開注冊表鍵 if (ERROR_SUCCESS != ::RegOpenKeyEx(HKEY_CURRENT_USER, "Software\\Microsoft\\ Windows\\ CurrentVersion\\Run", 0, KEY_WRITE, &hKey)) { ShowError("RegOpenKeyEx"); return FALSE; } // 修改注冊表值,實現開機自啟動 if (ERROR_SUCCESS != ::RegSetValueEx(hKey, lpszValueName, 0, REG_SZ, (BYTE *)lpszFileName, (1 + ::lstrlen(lpszFileName)))) { ::RegCloseKey(hKey); ShowError("RegSetValueEx"); return FALSE; } // 關閉注冊表鍵 ::RegCloseKey(hKey); return TRUE; }