Windows下通过写注册表的方式实现程序开机自启动

来源:互联网 发布:南京大学大专网络教育 编辑:程序博客网 时间:2024/06/05 08:12

程序可以读取同目录下的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;  } 



0 0
原创粉丝点击