SHRegGetValueA 函式 (shlwapi.h)
[SHRegGetValue 可能會在後續版本的作業系統或產品中變更或無法使用。 使用 RegGetValue 在其位置。]
擷取登錄值。
語法
LSTATUS SHRegGetValueA(
[in] HKEY hkey,
[in] LPCSTR pszSubKey,
[in] LPCSTR pszValue,
[in] SRRF srrfFlags,
[in, out] DWORD *pdwType,
[out] void *pvData,
[in, out] DWORD *pcbData
);
參數
[in] hkey
類型:HKEY
目前開啟之索引鍵的句柄,或下列任何預先定義的值。
HKEY_CLASSES_ROOT
HKEY_CURRENT_CONFIG
HKEY_CURRENT_USER
HKEY_LOCAL_MACHINE
HKEY_PERFORMANCE_DATA
HKEY_USERS
[in] pszSubKey
類型:LPCTSTR
null-terminated 字串的指標,指定從 hkey 到子機碼的相對路徑,以從中擷取值。 此參數可以 NULL 或空字串,在此情況下,會從 hkey 位置擷取數據。
[in] pszValue
類型:LPCTSTR
包含值名稱之 null終止字串的指標。 此參數可以 NULL 或空字串,在此情況下,會從預設值擷取數據。
[in] srrfFlags
類型:SRRF
限制擷取數據的一或多個 SRRF 旗標。 至少必須指定一個類型限制 (SRRF_RT) 值。
[in, out] pdwType
類型:LPDWORD
DWORD 的指標,這個指標會接收儲存在所擷取值中的數據類型。 使用預設值時,pdwType 是預設值的類型。 如需可能的值,請參閱 登錄資料類型。 如果未設定SRRF_NOEXPAND旗標,REG_EXPAND_SZ類型會自動展開並傳回為REG_SZ。 如果不需要類型資訊,則可以 NULL。
[out] pvData
類型:LPVOID
接收值數據之緩衝區的指標。 如果不需要數據,此參數可以 NULL。 例如,如果您只測試某個值是否存在,則特定值數據會是多餘的。
[in, out] pcbData
類型:LPDWORD
DWORD 的指標,在專案上,會以位元組為單位包含目的地數據緩衝區的大小,pvData。 只有在 pvDataNULL時,這個值才能 NULL。 結束時, 指向下列其中一個值。
pvData | 傳回值 | pcaData |
---|---|---|
NULL | ERROR_SUCCESS | 大小,以位元組為單位,足以保存登錄數據。 請注意,這不保證是精確的大小,但只有足夠的大小。 |
非NULL | ERROR_SUCCESS | 寫入 pvData的確切位元組數目。 |
非NULL | ERROR_MORE_DATA | 保留整個數據所需的位元組大小。 請注意,這不保證是精確的大小,但只有足夠的大小。 |
傳回值
類型:LSTATUS
如果成功,則傳回 ERROR_SUCCESS,否則會傳回 Winerror.h 中定義的非零錯誤碼。 您可以使用 FormatMessage 函式搭配 FORMAT_MESSAGE_FROM_SYSTEM 旗標來擷取錯誤的泛型描述。
言論
SHRegGetValue 提供數據類型檢查、開機模式檢查、自動擴充REG_EXPAND_SZ數據,以及保證 null終止REG_SZ、REG_EXPAND_SZ和REG_MULTI_SZ數據。
hkey 所識別的金鑰必須已開啟 KEY_QUERY_VALUE 安全性存取。 如果 pszSubKey
如果數據類型是REG_SZ、REG_EXPAND_SZ或REG_MULTI_SZ,則任何傳回的數據都會包含或考慮字串 null-termination。 例如,如果 pvData 未 NULL,則在該緩衝區中傳回的數據 null-terminated。 如果
除非設定SRRF_NOEXPAND旗標,否則REG_EXPAND_SZ類型的字串數據會在傳回之前自動展開。 展開的字串類型會在 pdwType 中回報為 REG_SZ, 參數會指向為展開字元串寫入的位元組數,而 pvData 所指向的緩衝區 會保留字符串的擴充版本。
效能注意事項
如果 pszSubKey當數據類型REG_EXPAND_SZ且尚未設定SRRF_NOEXPAND旗標時,可能會有其他呼叫登錄來讀取或重新讀取數據。 下列條件會導致該額外的呼叫。
pvData NULL ,不會 NULL 。 雖然未擷取數據,但必須讀取登錄以取得字元串,並展開該字串以判斷數據緩衝區的必要大小。- pvData 不是 NULL,而是太小而無法保存數據。 系統會重新讀取數據以取得完整字串、展開字串,並決定所需的大小總計。
注意
shlwapi.h 標頭會將SHRegGetValue定義為別名,根據UNICODE預處理器常數的定義,自動選取此函式的ANSI或 Unicode 版本。 混合使用編碼中性別名與非編碼中性的程序代碼,可能會導致編譯或運行時間錯誤不符。 如需詳細資訊,請參閱函式原型的
要求
要求 | 價值 |
---|---|
最低支援的用戶端 | Windows XP with SP2 [僅限傳統型應用程式] |
支援的最低伺服器 | Windows Server 2003 [僅限傳統型應用程式] |
目標平臺 | 窗戶 |
標頭 | shlwapi.h |
連結庫 | Shlwapi.lib |
DLL | Shlwapi.dll (6.0 版或更新版本) |