C MFC 編寫登錄檔,使開機自啟動

2021-08-10 11:02:21 字數 2000 閱讀 3401

設定乙個按鈕來呼叫登錄檔的函式;

void

cmfctest1dlg

::onbnclickedbutton5()

這裡編寫登錄檔自啟動函式

bool cmfctest1dlg::autostart()

;//max_path代表最大目錄值,等於260;

getmodulefilename(null, pathstr, max_path);//獲取程序的目錄,當第乙個引數為null時,使用當前程序目錄;

hkey hsoftkey;

regopenkey(hkey_current_user, _t("software\\microsoft\\windows\\currentversion\\run"), &hsoftkey);

/*返回值

long,零(error_success)表示成功。其他任何值都代表乙個錯誤**

參數列引數 型別及說明

hkey long,乙個已開啟項的控制代碼,或指定乙個標準項名

lpsubkey string,要開啟的項名

phkresult long,指定乙個變數,用於裝載(儲存)開啟登錄檔項的乙個控制代碼

*/int len = _tcslen(pathstr);

regsetkeyvalue(hsoftkey, 0, _t("autostart"), reg_sz, pathstr, len);

byte content[max_path] = ;

dword ret = 0;

dword dwtype = reg_sz;

dword type2 = 0;

dword size;

//需要呼叫兩遍,第一次呼叫獲取儲存值,第二次賦值,如果只呼叫一次會出現容量不足的error;

ret = reggetvalue(hkey_current_user, _t("software\\microsoft\\windows\\currentversion\\run"), _t("autostart"), rrf_rt_reg_sz, &type2, null, &size);

ret = reggetvalue(hkey_current_user, _t("software\\microsoft\\windows\\currentversion\\run"), _t("autostart"), rrf_rt_reg_sz, &type2, content, &size);

regclosekey(hsoftkey);

return

0;}

如果文件寫好後執行時出現防毒軟體提醒(如下圖),選擇允許本次操作,畢竟登錄檔是敏感的東西,防毒軟體都會提醒

其中有些函式方法不太懂,查了一下官方的文件

long winapi reggetvalue(

in hkey hkey,

in_opt lpctstr lpsubkey,

in_opt lpctstr lpvalue,

in_opt dword dwflags,

out_opt lpdword pdwtype,

out_opt pvoid pvdata,

inout_opt lpdword pcbdata

);ps:參考官方文件位址

long winapi regsetkeyvalue(

in hkey hkey,

in_opt lpctstr lpsubkey,

in_opt lpctstr lpvaluename,

in dword dwtype,

in_opt lpcvoid lpdata,

in dword cbdata

);引數

ps:參考官方文件位址

通過登錄檔實現開機自啟動

實現開機自啟動的途徑和方式有很多種,其中修改登錄檔方式應用最為廣泛。登錄檔相當是作業系統的資料庫,記錄著系統中方方面面的資料,其中也不乏直接或間接導致開機自啟動的資料。windows提供了專門的開機自啟動登錄檔。在每次開機完成後,它都會在這個登錄檔鍵下遍歷鍵值,以獲取鍵值中的程式路徑,並建立程序啟動...

登錄檔開機啟動

登錄檔裡如何新增開機啟動項 新增開機啟動項 通過登錄檔 第一步 找到登錄檔的啟動項位置 hkey local machine software microsoft windows currentversion run主鍵 第二步 在另邊點選右鍵 新建 字串值 取名 qq 如下圖 第三步 找到你所要增...

登錄檔操作之自啟動

登錄檔是windows系統的核心配置檔案。一般我們安裝木馬時會向登錄檔中寫入一些關於自身程式的有關資訊。例如我的木馬中就是講ip位址 埠等資訊寫入登錄檔中。這裡我們通過修改登錄檔來實現木馬的自啟動。下面給出兩個設定登錄檔鍵值的函式,以後會經常用到 修改字串型別鍵值 bool createstring...