#include #include using namespace std;
int main(int argc, char** argv)
; long lret = regopenkeyex(hkey_local_machine, "software\\postgresql\\installations\\postgresql-9.5", 0, key_read, &hkey);
if(error_success != lret)
dword dwtype = 0;
char szvalue[246] = ;
dword valuesize = sizeof(szvalue);
lret = regqueryvalueex(hkey, "base directory", null, &dwtype, (lpbyte)&szvalue[0], &valuesize);
if(error_success != lret)
cout << szvalue << endl;
(void)regclosekey(hkey);
getchar();
return 0;
}
這裡需要用到三個api函式:
regopenkeyex
regqueryvalueex
regclosekey
long regopenkeyex(
hkey hkey, // handle to open key // 你需要讀取的主鍵名稱如hkey_local_machine
lpctstr lpsubkey, // address of name of subkey to open // 你需要讀取的鍵值路徑(當然不包含前面的主鍵名稱)
dword uloptions, // reserved // reserved你懂得null就行了
regsam samdesired, // security access mask // 你搞這個鍵值幹嘛?讀還是寫自己找巨集定義填上。我是key_read。
phkey phkresult // address of handle to open key // 開啟乙個鍵,這個物件必然需要乙個物件控制代碼,這個就是控制代碼返回指標
);
long regqueryvalueex(
hkey hkey, // handle to key to query // 前面返回的控制代碼,這裡拿來讀鍵值
lptstr lpvaluename, // address of name of value to query // 鍵是指登錄檔左側半邊窗,鍵值是指右半邊
// so前面路徑只能指示最終路徑,這裡指定路徑下的具體哪乙個鍵值(放心後面有栗子)
lpdword lpreserved, // reserved // 不要值必然null了
lpdword lptype, // address of buffer for value type // 對應搞個dword變數再&一下。這個和下面兩個是重要的返回值。
); // 就是通過後兩個引數讀出鍵值資料的
long regclosekey(
hkey hkey // 釋放鍵的控制代碼
);
C 讀取Windows登錄檔資訊
登錄檔是視窗系統的乙個核心的資料庫,在這個資料庫中存放中與系統相關的各種引數,這些引數直接控制中系統的啟動 硬體的驅動程式安裝資訊以及在視窗系統上執行的各種應用程式的註冊資訊等。這就意味著,如果登錄檔因為某些原因受到了破壞,輕者是視窗系統啟動過程出現異常,重者就有可能導致整個系統的完全癱瘓。所以正確...
windows登錄檔 登錄檔的認識
登錄檔的特點 1.登錄檔允許對硬體 系統引數 應用程式和裝置驅動程式進行跟蹤配置,這使得修改某些設定後不用重新啟動成為可能。2.登錄檔中登入的硬體部分資料可以支援高版本的即插即用特性。當windows檢測到機器上的新裝置時,就把有關資料儲存到登錄檔中,另外,還可以避免新裝置與原有裝置之間的資源衝突。...
讀取登錄檔(delphi)
function readreg xbf widestring widestring var xbfconnect string xbfconn1,regconn2,xbfconn3 string tempregbin array 0.15 of char xbflen integer h1 tha...