c语言 程序开机自启

闲来无事,研究下c 语言制作病毒,刚好涉及开机自启,遂写下该文章
在查阅N多资料和Google后
终于搞定c语言开机自启的实现
(吐槽: 网上文章真是"瓜皮",bug奇多)

原理:
windows 开机会检索注册表,其中有一项

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run
是微软 定义的开机程序检索表
利用windows api 函数修改该注册表即可实现开机启动程序

我们手动实现一下:
1、点击开始——运行,输入regedit打开注册表
2、找到“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run”打开后,
点右键 新建-字符串值,输入任意名称,然后右击该名称-修改,
在“数值数据”栏输入你要自动启动的应用程序文件所在的完整路径的文件名


活不多说,开码

需要以下头文件

	#include <Windows.h>
	#include <stdio.h>

函数主题如下:

void HKRunator(char *programName)   //程序名称(**全路径**)
{
	HKEY hkey = NULL;
	DWORD rc;

	rc = RegCreateKeyEx(HKEY_LOCAL_MACHINE,                      //创建一个注册表项,如果有则打开该注册表项
		"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run",
		0,
		NULL,
		REG_OPTION_NON_VOLATILE,
		KEY_WOW64_64KEY | KEY_ALL_ACCESS,    //部分windows系统编译该行会报错, 删掉 “”KEY_WOW64_64KEY | “” 即可
		NULL,
		&hkey,
		NULL);

	if (rc == ERROR_SUCCESS)   
	{
		rc = RegSetValueEx(hkey, 
			"UStealer",
			0,
			REG_SZ,
			(const BYTE *)programName,
			strlen(programName));
		if (rc == ERROR_SUCCESS)
		{
			RegCloseKey(hkey);
		}
	}
}

如需调用该函数,传入程序全路径名即可。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章