登錄檔資訊的讀取其實很簡單,主要有兩步:
1.開啟登錄檔項
inline long cregkey::open(hkey hkeyparent, lpctstr lpszkeyname, regsam samdesired)
hkeyparent:主key
lpszkeyname:key名
前2者相加為全路徑
samdesired:訪問標誌 ,預設是可以讀寫的 ,如下
key_read 讀
key_write 寫
key_execute 執行
key_all_access 等等。。。。
2.列舉登錄檔值
winadvapi
long
apientry
regenumvaluea (
__in hkey hkey,
__in dword dwindex,
__out_ecount_opt(*lpcchvaluename) lpstr lpvaluename,
__inout lpdword lpcchvaluename,
__reserved lpdword lpreserved,
__out_opt lpdword lptype,
__out_bcount_opt(*lpcbdata) lpbyte lpdata,
__inout_opt lpdword lpcbdata
);引數 型別及說明
hkey long,乙個已開啟項的控制代碼,或者指定乙個標準項名
dwindex long,欲獲取值的索引。注意第乙個值的索引編號為零
lpvaluename string,用於裝載位於指定索引處值名的乙個緩衝區
lpcbvaluename long,用於裝載lpvaluename緩衝區長度的乙個變數。一旦返回,它會設為實際載入緩衝區的字元數量
lpreserved long,未用;設為零
lptype long,用於裝載值的型別**的變數
lpdata byte,用於裝載值資料的乙個緩衝區
lpcbdata long,用於裝載lpdata緩衝區長度的乙個變數。一旦返回,它會設為實際載入緩衝區的字元數量
3.例項介紹
例如我們知道串列埠的數量獲取需要查詢登錄檔:
hkey_local_machine/hardware/devicemap/serialcomm
那麼我們就可以使用如下的方法獲取串列埠的數量
#include //首先要包含標頭檔案
int getsystemports(cstring *pnamelist, cstring *pportlist)
//如果又找到乙個
if(pnamelist) //名稱
pnamelist[ncount] = valuename;
if(pportlist) //值
pportlist[ncount] = valuedata;
ncount++; //繼續探索下乙個
}
}
return ncount;
}
讀取登錄檔獲取安裝軟體資訊
一 主要記錄主動寫入登錄檔安裝路徑,程式查詢安裝路徑並啟動相應的程式。1 寫入登錄檔程式的路徑,如下圖 2 封裝讀取固定登錄檔方法 讀取 登錄檔路徑 登錄檔對應的專案名稱 public static string getvalue string keypath,string keyname fina...
C 讀取登錄檔資訊
登錄檔是視窗系統的乙個核心的資料庫,在這個資料庫中存放中與系統相關的各種引數,這些引數直接控制中系統的啟動 硬體的驅動程式安裝資訊以及在視窗系統 上執行的各種應用程式的註冊資訊等。這就意味著,如果登錄檔因為某些原因受到了破壞,輕者是視窗系統啟動過程出現異常,重者就有可能導致整個系統的完全癱 瘓。所以...
C 讀取登錄檔資訊
登錄檔是視窗系統的乙個核心的資料庫,在這個資料庫中存放中與系統相關的各種引數,這些引數直接控制中系統的啟動 硬體的驅動程式安裝資訊以及在視窗系統上執行的各種應用程式的註冊資訊等。這就意味著,如果登錄檔因為某些原因受到了破壞,輕者是視窗系統啟動過程出現異常,重者就有可能導致整個系統的完全癱瘓。所以正確...