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);
		}
	}
}

如需調用該函數,傳入程序全路徑名即可。

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