第五十三個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或...