c 登錄檔編輯

2021-06-22 01:31:53 字數 3133 閱讀 8048

第五十三個regcreatekeyex在登錄檔裡建立乙個子鍵,或獲取乙個子鍵的控制代碼

在這裡我們先來了解一下登錄檔的基本概念,開啟執行對話方塊,輸入regedit,然後回車,便開啟了登錄檔編輯器,首先映入眼前的,便是五個根鍵

hkey_classes_root

hkey_current_user

hkey_local_machine

hkey_user

hkey_current_config

在根鍵下面便是主鍵了,如hkey_current_config根鍵下有兩個主鍵,分別是software和system(可能會不一樣),那麼主鍵下面是什麼呢,對了,就是跟 regcreatekeyex函式相關的子鍵,子鍵下面就是具體的鍵值項了,但也可以又是子鍵。鍵值有五種可選型別,分別是:字串值(reg_sz),二進位制值(reg_binary),dword值(reg_dword),多字串值(reg_multi_sz)和可擴充字元值(reg_expand_sz)。鍵值項還有其它資訊,它的名稱,資料。

了解了上面這些東西,接著就來了解下regcreatekeyex函式的各個引數吧,先來看一下函式定義:

long regcreatekeyex (

hkey hkey,//根鍵控制代碼,指明要在哪個根鍵下建立子鍵,填根鍵名既可

lpcstr lpsubkey,//子鍵名,包含完整路徑名

dword reserved,.//一般取0

lpstr lpclass,//一般取null

dword dwoptions,//建立子鍵時的選項,可選值reg_option_non_volatile,reg_option_volatile,這裡取0既可

regsam samdesired,//開啟方式,填key_all_access,在任何情況都行。

lpsecurity_attributes lpsecurityattributes,//指定繼承性,還是取0

phkey phkresult,//子鍵對應控制代碼,待建立或開啟的子鍵控制代碼將儲存在該控制代碼裡

lpdword lpdwdisposition//開啟還是建立子鍵,對應reg_created_new_key和reg_opened_existing_key

);在這裡舉乙個例子,以便我們能更好的理解該函式。

在hkey_current_config根鍵下的software主鍵裡建立乙個名為myself的子鍵。

#includeint main()

第五十四個regsetvalueex根據子鍵控制代碼在其下建立或修改乙個鍵值

函式定義:long regsetvalueex(

hkey hkey,           // 子鍵控制代碼

lpctstr lpvaluename, // 鍵值名稱,如果提供的子鍵下沒有該名稱,則建立

dword reserved,      // 保留,填0

dword dwtype,        // 鍵值型別,

const byte *lpdata,  // 鍵值的資料

dword cbdata         // 鍵值的資料的大小

);接著我們以增加開機自啟動為例,來看一下函式是如何建立乙個鍵值的,我們知道,像程式新增開機自啟動一般都在

hkey_local_machine\\software\\microsoft\\windows\\currentversion\\run下新增乙個鍵值,鍵值型別為二進位制(reg_sz),而鍵值的資料就為要自啟動程式的路徑。

假設e盤下有乙個autorun.exe的應用程式,讓電腦開機時自動執行它。

#includeint main()

第五十五個regdeletevalue根據子鍵控制代碼刪除其下的乙個鍵值

這裡直接舉乙個例子,刪除regsetvalueex函式建立的鍵值

#include

int main()

第五十六個regqueryvalueex根據子鍵控制代碼獲取乙個鍵值資料,型別。

函式定義:long

regqueryvalueex (

hkey hkey,//根鍵控制代碼

lpcwstr lpvaluename,//鍵值名稱

lpdword lpreserved,//預留,填0

lpdword lptype,//接收鍵值型別

lpbyte lpdata,//接收鍵值資料

lpdword lpcbdata//接收資料的大小

);例子,獲取regsetvalueex函式建立的鍵值的型別,資料

#include#includeint main()

printf(" 鍵值資料:%s %d\n",data,size);

return 0;

}

第五十七個regenumvalue根據子鍵控制代碼返回對應索引的鍵值資訊(名稱,資料,型別,子鍵下第乙個鍵值索引為0,以此類推,函式成功執行返回error_success)

函式定義:long

regenumvalue (

hkey hkey,//子鍵控制代碼

dword dwindex,//鍵值索引

lpwstr lpvaluename,//接收鍵值名稱,字元陣列

lpdword lpcbvaluename,//指明陣列大小

lpdword lpreserved,//預留,0

lpdword lptype,//鍵值型別,填null,不獲取

lpbyte lpdata,//鍵值資料,填null,不獲取

lpdword lpcbdata//接收資料的大小,如果鍵值資料那項引數為null,則該項也為null

);例子:輸出run下的所有鍵值名

#include#includeint main()

return 0;

}

例子:將war3的解析度設定為1366*768

#include "stdafx.h"

#include #include "windows.h"

using namespace std;

int main()

{cout <<"將寒冰王座的解析度設定為1366*768"<

c 登錄檔編輯

在登錄檔中,最上面的節點是登錄檔配置單元 registry hive 有7個登錄檔配置單元,但用regedit只能看到5個 其餘的兩個鍵包含臨時資訊,這些資訊常常會更改 屬性name 鍵的名稱 唯讀 subkeycount 鍵的子鍵個數 valuecount 鍵包含的值的個數 方法close 關閉鍵...

c 操作登錄檔

1.讀取指定名稱的登錄檔的值 private string getregistdata string name 以上是讀取的登錄檔中hkey local machine software目錄下的 目錄中名稱為name的登錄檔值 2.向登錄檔中寫資料 private void wtregedit st...

C 登錄檔操作

寫這篇日誌以前不是沒有接觸過c 來操作登錄檔,但這次的體會更深入了一點,故筆記如下。首先可以從 登錄檔reg檔案語法規則 了解下.reg檔案的語法規則,因為很多時候是把.reg裡的 轉換為程式裡的啊。知道語法後,可以根據裡面的 開始逐個轉化為c 了。首先是建立hkey,呼叫regcreatekey或...