閒來無事,研究下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);
}
}
}
如需調用該函數,傳入程序全路徑名即可。