目录
一、前言
二、代码
三、使用步骤
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 + RGetSystemDirectory(SysPath, size);GetModuleFileName(NULL, CurrentPath, size);//Copy FileFileCurrentName = 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 Keyret = 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文件生成,证明成功了!