標籤:windows c++ 註冊表 原始碼
程式可以讀取同目錄下的config.ini檔案中的配置來實現開機自啟動。
config.ini檔案地格式執行個體如下:
[Main]
KeyName = test
ProcessPath = D:\bin\test.exe
其中KeyName欄位為寫入註冊表的表項名稱(可以設定為程式名)
ProcessPath為程式的完整路徑
程式的完整原始碼如下。
regedit函數實現註冊表寫入,autopen實現開機自啟動。
編譯後的程式在此下載:程式下載
#include <stdio.h>#include <windows.h>int regedit(HKEY key, const char* reg_name, const char* key_name, const char* key_value){HKEY hkResult; int ret=RegOpenKeyEx(key, reg_name, 0, KEY_ALL_ACCESS, &hkResult);if(ret != 0)return ret;ret=RegSetValueEx(hkResult, key_name, 0, REG_EXPAND_SZ, (CONST BYTE*)key_value, 25);if(ret==0){ RegCloseKey(hkResult);return 0;} else{ return ret;}}int autopen(const char* key_name, const char* process_path){char reg_name[] = "Software\\Microsoft\\Windows\\CurrentVersion\\Run";return regedit(HKEY_LOCAL_MACHINE, reg_name, key_name, process_path);}int main(void) {char key_name[100];char process_path[1000];GetPrivateProfileStringA("Main", "KeyName", "test", key_name, sizeof(key_name), ".\\config.ini");GetPrivateProfileStringA("Main", "ProcessPath", "test", process_path, sizeof(process_path), ".\\config.ini");int ret = autopen(key_name, process_path);if(ret == 0)printf("write to register succeed\n");elseprintf("write to register failed\n");system("pause"); return 0; }