目录
一、前言
二、代码
三、使用步骤
1.编译生成exe文件、
2.以管理员身份运行代码
3.打开注册表,验证结果
一、前言
在Windows操作系统中,将exe文件的路径添加到注册表下,主要用于实现程序的开机自动运行功能。
注册表路径为:
Software\\Microsoft\\Windows\\CurrentVersion\\Run
二、代码
实现的代码如下。代码为一个函数,可以直接复制粘贴到运行程序中。注意添加头文件。
#include <windows.h>
#include <io.h>void AddToSystem()
{
	HKEY hKEY;
	char CurrentPath[MAX_PATH] = { 0 };
	char SysPath[MAX_PATH] = { 0 };
	long ret = 0;
	LPSTR FileNewName;
	LPSTR FileCurrentName;
	DWORD type = REG_SZ;
	DWORD size = MAX_PATH;
	LPCTSTR Rgspath = "Software\\Microsoft\\Windows\\CurrentVersion\\Run";   // regedit   win + R
	GetSystemDirectory(SysPath, size);
	GetModuleFileName(NULL, CurrentPath, size);
		//Copy File
	FileCurrentName = CurrentPath;
	FileNewName = lstrcat(SysPath,"\\Steal.exe");   // 文件名可以自己更改
	struct _finddata_t Steal;
	printf("retl = %d\n", ret);
	if (_findfirst(FileNewName, &Steal) != -1)
		return;//已经安装!
	printf("ret2 = %d\n", ret);   
	int ihow = MessageBox(0, "该程序只允许用于合法的用途!\n继续运行该程序将使这台机器处于被监控的状态!\n如果您不想这样,请按“取消”按钥退?出。\n按下“是”按钮该程序将被复 + \
		制到您的机器上,并随系统启动自动运行。\n按下“否”按钮,程序只运行一次,不会在您的系统内留下任何东西。?","警告", MB_YESNOCANCEL | MB_ICONWARNING | MB_TOPMOST);
	if (ihow == IDCANCEL)
		exit(0);
	if (ihow == IDNO)
		return;//只运行一次
	//复制文件
	ret = CopyFile(FileCurrentName, FileNewName, TRUE);
	if (!ret)
	{
		return;
	}
	//加入注册表
	printf("ret = %d\n", ret);
	ret = RegOpenKeyEx(HKEY_LOCAL_MACHINE, Rgspath, 0, KEY_WRITE, &hKEY);
	if (ret != ERROR_SUCCESS)
	{
		RegCloseKey(hKEY);
		return;
	}
	//Set Key
	ret = RegSetValueEx(hKEY, "Steal", NULL, type, (const unsigned char*)FileNewName, size);
	if (ret != ERROR_SUCCESS)
	{
		RegCloseKey(hKEY);
		return;
	}
	RegCloseKey(hKEY);
}三、使用步骤
1.编译生成exe文件、
将代码复制粘贴到程序中,点击生成。

生成结果如图:

2.以管理员身份运行代码
找到 debug 文件下的exe文件,右键管理员身份启动。

3.打开注册表,验证结果
        win键 + R,输入regedit,找到这个路径下:Software\\Microsoft\\Windows\\CurrentVersion\\Run,发现有exe文件生成,证明成功了!

















![[教程]Gitee保姆级图文使用教程](https://img-blog.csdnimg.cn/3d321fc388b04170832f83fb745fa710.png)


