HKEY hkey = { 0 };
RegOpenKeyExA(HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", 0, KEY_WRITE, &hkey);
char path[MAX_PATH] = { 0 };
GetModuleFileNameA(nullptr, path, MAX_PATH);
printf("%s\n", path);
RegSetValueExA(hkey, "CLOSE_COMPUTER", 0, REG_SZ, (byte*)path, strlen(path));
uj5u.com熱心網友回復:
很多木馬會利用這個注冊表項實作木馬開機自啟動。所以在win7之后,對該注冊表項的寫入會有限制。右鍵以管理員身份運行試下。另外一些殺毒軟體和實時監控軟體也會監控應用程式對該注冊表項的寫入;管理員身份不行,把殺毒軟體關掉再試下uj5u.com熱心網友回復:
試了 還是沒用uj5u.com熱心網友回復:
RegSetValueExA執行后使用GetLastError()看下回傳值。另外如果是64位系統,RegOpenKeyExA的第四個引數使用KEY_WRITE|KEY_WOW64_64KEY試下。
如果是64位系統,程式寫完后,下面兩處都看下
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Run
uj5u.com熱心網友回復:
關閉殺軟、使用管理員帳戶,以處理員方式運行還是不行檢查函式回傳值判斷是否成功,如果失敗,呼叫GetLastError判斷失敗原因
uj5u.com熱心網友回復:
用CRegKey,避免64位 重定向問題uj5u.com熱心網友回復:
用命令列工具reg試試。uj5u.com熱心網友回復:
lz,建議去了解一下RegDisableReflectionKey,RegCreateKeyEx,RegSetValueEx,RegEnableReflectionKey這幾個函式的用法uj5u.com熱心網友回復:
RegSetValueExA最后一個引數要加一,否則\0沒寫進去uj5u.com熱心網友回復:
鹵煮這種從不檢查回傳值的寫法 放我組里要被開uj5u.com熱心網友回復:
大學老師都這么教的。
uj5u.com熱心網友回復:
1. 權限問題,包括殺毒類、安全類軟體的監控等。寫入 HKLM 需要管理員;2. 64 位重定向。32 位注冊表寫入 HKLM\Software 會被寫入到 HKLM\Software\Wow6432Node;
3. 注冊表虛擬化。可能 1、2 你都滿足還是沒看到值,我就不多說了,請你看我這篇博文:
http://www.cnblogs.com/jiake/p/4956218.html
uj5u.com熱心網友回復:
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/118182.html
標籤:硬件/系統
