将exe文件添加到注册表中,实现开机时自动运行

目录

 

一、前言

二、代码

三、使用步骤

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文件生成,证明成功了!

  • 11
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值