首页 C/C++修行正文

C++ 使某个程序开机自启 修改注册表

欲儿 C/C++修行 2019-08-07 446 0

指的注意的是,如果你是在编译器里的话,那么要将编译器以管理员的方式打开,如果是写出来的exe的话,那么请以管理员方式运行,反正就是要管理员权限就行了,为什么,因为注册表涉及的计算机安全好了

#include <stdio.h>
#include <windows.h>
#include <iostream>
using namespace std;

int set()
{
	LPCTSTR lpSubKey = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run";
	HKEY hKey;
	REGSAM flag = KEY_WOW64_64KEY;
	DWORD dwDisposition = REG_OPENED_EXISTING_KEY;
	LONG lRet = RegOpenKeyEx(HKEY_LOCAL_MACHINE, lpSubKey, 0, KEY_ALL_ACCESS | flag, &hKey);
	//LONG lRet = ::RegCreateKeyEx(HKEY_LOCAL_MACHINE, lpSubKey, NULL, NULL, REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS, NULL, &hKey, &dwDisposition);    
	if (ERROR_SUCCESS != lRet)
	{
		printf("打开注册表失败,也许是权限不足");
		while (1);
		return 0;
	}
	
	TCHAR *pchrName = "D:\\abc.txt";//这里是程序的绝对路径,不仅exe可以开机自启,其他程序依然可以
	lRet = ::RegSetValueEx(hKey, TEXT("TEST"), NULL, REG_SZ, (LPBYTE)pchrName, strlen(pchrName)*sizeof(TCHAR)+1); //设置注册表项    
	if (ERROR_SUCCESS != lRet)
	{
		printf("写入注册表失败,也许是权限不足");
		while (1);
		return 0;
	}
	::RegCloseKey(hKey); //与RegCreateKeyEx配对写    
	printf("成功");
}

int main()
{
	set();
	while (1);
	return 0;
}


版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

评论