RegQueryValueEx,是VC語言中的一種。
功能:檢索一個已打開的註冊表句柄中,指定的註冊表鍵的類型和設置值。
//函數原型:
LSTATUS RegQueryValueExA(
HKEY hKey,
LPCSTR lpValueName,
LPDWORD lpReserved,
LPDWORD lpType,
LPBYTE lpData,
LPDWORD lpcbData
);
返回值
Long,零(ERROR_SUCCESS)表示成功。其他任何值都代表一個錯誤代碼
參數表
參數 類型及說明
- HKEY hKey,//一個已打開項的句柄,或者指定一個標準項名
- LPCTSTR lpValueName,//要查詢註冊表鍵值的名字字符串,註冊表鍵的名字,以空字符結束。
- LPDWORD lpReserved,//未用,設爲零
- LPDWORD lpType,//用於裝載取回數據類型的一個變量
- LPBYTE lpData,//用於裝載指定值的一個緩衝區
- LPDWORD lpcbData,//用於裝載lpData緩衝區長度的一個變量.//一旦返回,它會設爲實際裝載到緩衝區的字節數
hKey
打開的註冊表項的句柄。該密鑰必須已使用KEY_QUERY_VALUE訪問權限打開。
此句柄由 RegCreateKeyEx,RegCreateKeyTransacted,RegOpenKeyEx或 RegOpenKeyTransacted函數返回。它也可以是以下 預定義的鍵之一:
HKEY_CLASSES_ROOT
HKEY_CURRENT_CONFIG
HKEY_CURRENT_USER
HKEY_LOCAL_MACHINE
HKEY_PERFORMANCE_DATA
HKEY_PERFORMANCE_NLSTEXT
HKEY_PERFORMANCE_TEXT
HKEY_USERS
lpValueName
註冊表值的名稱。
如果lpValueName爲NULL或空字符串“”,則該函數將檢索鍵的未命名或默認值(如果有)的類型和數據。
如果lpValueName指定的值不在註冊表中,則該函數返回ERROR_FILE_NOT_FOUND。
鍵不會自動具有未命名或默認值。未命名的值可以是任何類型。
lpReserved
此參數是保留參數,必須爲NULL。
lpType
指向變量的指針,該變量接收一個代碼,該代碼指示存儲在指定值中的數據類型。所述lpType參數可以是NULL如果不需要的類型編碼。
lpData
指向接收值數據的緩衝區的指針。如果不需要數據,則此參數可以爲NULL。
lpcbData
指向變量的指針,該變量指定lpData參數指向的緩衝區的大小(以字節爲單位)。函數返回時,此變量包含複製到lpData的數據的大小。
該參數lpcbData參數可以是NULL只有當lpData是NULL的時候。
如果數據具有REG_SZ,REG_MULTI_SZ或REG_EXPAND_SZ類型,則該大小包括任何一個或多個終止的空字符,除非數據不包含它們而存儲。有關更多信息,請參見備註。
如果lpData參數指定的緩衝區不足以容納數據,則該函數返回ERROR_MORE_DATA並將所需的緩衝區大小存儲在lpcbData指向的變量中。在這種情況下,lpData緩衝區的內容未定義。
如果lpData爲NULL,而lpcbData爲非NULL,則該函數返回ERROR_SUCCESS並將數據的大小(以字節爲單位)存儲在lpcbData指向的變量中。這使應用程序可以確定爲值的數據分配緩衝區的最佳方法。
如果的hKey指定HKEY_PERFORMANCE_DATA和的lpData緩衝區不夠大,無法容納所有返回的數據, 函數RegQueryValueEx返回ERROR_MORE_DATA,並通過返回的值參數lpcbData參數是不明確的。這是因爲性能數據的大小可以從一個調用更改爲下一個調用。在這種情況下,您必須增加緩衝區大小,然後再次調用 RegQueryValueEx並在lpcbData參數中傳遞更新的緩衝區大小。重複此操作,直到功能成功。您需要維護一個單獨的變量來跟蹤緩衝區大小,因爲lpcbData返回的值是不可預測的。
如果lpValueName註冊表值不存在,則RegQueryValueEx返回ERROR_FILE_NOT_FOUND,並且通過lpcbData參數返回的值是不確定的。