程序可以读取同目录下的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"); else printf("write to register failed\n"); system("pause"); return 0; }