共用方式為


RegGetValueW 函式 (winreg.h)

擷取指定登錄值的型別和數據。

語法

LSTATUS RegGetValueW(
  [in]                HKEY    hkey,
  [in, optional]      LPCWSTR lpSubKey,
  [in, optional]      LPCWSTR lpValue,
  [in, optional]      DWORD   dwFlags,
  [out, optional]     LPDWORD pdwType,
  [out, optional]     PVOID   pvData,
  [in, out, optional] LPDWORD pcbData
);

參數

[in] hkey

開啟登錄機碼的句柄。 金鑰必須已以KEY_QUERY_VALUE訪問許可權開啟。 如需詳細資訊,請參閱 登錄機碼安全性和訪問許可權

RegCreateKeyExRegCreateKeyTransactedRegOpenKeyEx 或 RegOpenKeyTransacted 函式會傳回此句柄。 它也可以是下列其中一個 預先定義的金鑰

HKEY_CLASSES_ROOT
HKEY_CURRENT_CONFIG
HKEY_CURRENT_USER
HKEY_LOCAL_MACHINE
HKEY_PERFORMANCE_DATA
HKEY_PERFORMANCE_NLSTEXT
HKEY_PERFORMANCE_TEXT
HKEY_USERS

[in, optional] lpSubKey

登錄機碼的路徑,相對於 hkey 參數所指定的機碼。 此子機碼會擷取登錄值。

路徑不區分大小寫。

如果此參數為 NULL 或空字串 “”,則會從 hkey 本身指定的索引鍵讀取值。

[in, optional] lpValue

登錄值的名稱。

如果此參數為 NULL 或空字串 “”,則函式會擷取索引鍵未命名或預設值的類型和數據。如果有的話。 索引鍵不會自動具有未命名或預設值,且未命名的值可以是任何類型的。

如需詳細資訊,請參閱 登錄專案大小限制

[in, optional] dwFlags

旗標,限制要查詢的值數據類型。 如果值的數據類型不符合此準則,則函式會失敗。 此參數可以是下列一或多個值。

意義
RRF_RT_ANY
0x0000ffff
沒有類型限制。
RRF_RT_DWORD
0x00000018
將類型限制為32位RRF_RT_REG_BINARY |RRF_RT_REG_DWORD。
RRF_RT_QWORD
0x00000048
將類型限制為64位RRF_RT_REG_BINARY |RRF_RT_REG_QWORD。
RRF_RT_REG_BINARY
0x00000008
將類型限制為REG_BINARY。
RRF_RT_REG_DWORD
0x00000010
將類型限制為REG_DWORD。
RRF_RT_REG_EXPAND_SZ
0x00000004
將類型限制為 REG_EXPAND_SZ。
RRF_RT_REG_MULTI_SZ
0x00000020
將類型限制為REG_MULTI_SZ。
RRF_RT_REG_NONE
0x00000001
將類型限制為REG_NONE。
RRF_RT_REG_QWORD
0x00000040
將類型限制為REG_QWORD。
RRF_RT_REG_SZ
0x00000002
將類型限制為REG_SZ。
 

此參數也可以包含下列一或多個值。

意義
RRF_NOEXPAND
0x10000000
如果值的類型為 REG_EXPAND_SZ,請勿自動展開環境字串。
RRF_ZEROONFAILURE
0x20000000
如果 pvData 不是 NULL,請在失敗時將緩衝區的內容設定為零。
RRF_SUBKEY_WOW6464KEY
0x00010000
如果 lpSubKey 不是 NULL,請開啟 lpSubKey 以KEY_WOW64_64KEY訪問許可權指定的子機碼。 如需這些訪問許可權的相關信息,請參閱 登錄機碼安全性和訪問許可權

您無法搭配RRF_SUBKEY_WOW6432KEY指定RRF_SUBKEY_WOW6464KEY

RRF_SUBKEY_WOW6432KEY
0x00020000
如果 lpSubKey 不是 NULL,請開啟 lpSubKey 以 KEY_WOW64_32KEY訪問許可權指定的子機碼。 如需這些訪問許可權的相關信息,請參閱 登錄機碼安全性和訪問許可權

您無法搭配 RRF_SUBKEY_WOW6464KEY 來指定 RRF_SUBKEY_WOW6432KEY

[out, optional] pdwType

接收程式代碼的變數指標,指出儲存在指定值中的數據類型。 如需可能的類型代碼清單,請參閱 登錄實值類型。 如果不需要類型,此參數可以是 NULL

[out, optional] pvData

接收值數據的緩衝區指標。 如果不需要數據,此參數可以是 NULL

如果數據是字串,函式會檢查終止 的 Null 字元。 如果找不到字串,如果緩衝區夠大,則字串會以 Null 終止符儲存,以容納額外的字元。 否則,函式會失敗並傳回ERROR_MORE_DATA。

[in, out, optional] pcbData

變數的指標,指定 pvData 參數所指向的緩衝區大小,以位元組為單位。 當函式傳回時,此變數會包含複製到 pvData 的數據大小。

只有當 pvDataNULL,才會有 null 的 azureData 參數。

如果數據具有REG_SZ、REG_MULTI_SZ或REG_EXPAND_SZ類型,則此大小會包含任何終止 的 Null 字元或字元。 如需詳細資訊,請參閱<備註>。

如果 pvData 參數指定的緩衝區不夠大來保存數據,則函式會傳回ERROR_MORE_DATA,並將所需的緩衝區大小儲存在 由其所指向的變數中。 在此情況下,如果 dwFlags 指定RRF_ZEROONFAILURE且未定義 ,pvData 緩衝區的內容會是零。

如果 pvDataNULL,且 其為NULL,則函式會傳回ERROR_SUCCESS,並以位元組為單位儲存數據的大小,以位元組為單位,並儲存 於由其所指向的變數中。 這可讓應用程式判斷為值數據配置緩衝區的最佳方式。

如果 hKey 指定 HKEY_PERFORMANCE_DATA ,且 pvData 緩衝區不足以包含所有傳回的數據,則函式會傳回ERROR_MORE_DATA,而且透過 ERROR_MORE_DATA 參數傳回的值是未定義的。 這是因為效能數據的大小可以從一個呼叫變更為下一個呼叫。 在此情況下,您必須增加緩衝區大小,並再次呼叫 RegGetValue ,並在其中傳遞 更新 的緩衝區大小。 重複此動作,直到函式成功為止。 您必須維護個別的變數,以追蹤緩衝區大小,因為 無法預測由 azuredata 傳回的值。

傳回值

如果函式成功,傳回值會ERROR_SUCCESS。

如果函式失敗,則傳回值是 系統錯誤碼

如果 pvData 緩衝區太小而無法接收值,函式會傳回ERROR_MORE_DATA。

如果 lpValue 登錄值不存在,函式會傳回ERROR_FILE_NOT_FOUND。

如果 dwFlags 同時指定 RRF_SUBKEY_WOW6464KEYRRF_SUBKEY_WOW6432KEY的組合,函式會傳回ERROR_INVALID_PARAMETER。

備註

應用程式通常會呼叫 RegEnumValue 來判斷值名稱,然後 RegGetValue 來擷取名稱的數據。

如果數據具有REG_SZ、REG_MULTI_SZ或REG_EXPAND_SZ類型,而且此函式的 ANSI 版本會 (藉由明確呼叫 RegGetValueA 或未定義 UNICODE,或在包含 Windows.h 檔案) 之前未定義 UNICODE,則此函式會先將預存的 Unicode 字符串轉換成 ANSI 字串串,然後再將它複製到 pvData 所指向的緩衝區。

呼叫此函式時, 將 hkey 設定為 HKEY_PERFORMANCE_DATA 句柄和指定物件的值字串時,傳回的數據結構有時會有未查詢的物件。 不要驚奇;這是正常行為。 您應該一律預期會逐步執行傳回的數據結構,以尋找要求的物件。

請注意,存取特定登錄機碼的作業會重新導向。 如需詳細資訊,請參閱 登錄中的登錄虛擬化32 位和 64 位應用程式數據

若要編譯使用此函式的應用程式,請將_WIN32_WINNT定義為0x0600或更新版本。 如需詳細資訊,請參閱 使用 Windows 標頭

注意

winreg.h 標頭會將 RegGetValue 定義為別名,根據 UNICODE 預處理器常數的定義,自動選取此函式的 ANSI 或 Unicode 版本。 混合使用編碼中性別名與非編碼中性的程序代碼,可能會導致編譯或運行時間錯誤不符。 如需詳細資訊,請參閱 函式原型的慣例

規格需求

需求
最低支援的用戶端 Windows Vista、Windows XP Professional x64 Edition [僅限傳統型應用程式]
最低支援的伺服器 Windows Server 2008、Windows Server 2003 SP1 [僅限傳統型應用程式]
目標平台 Windows
標頭 winreg.h (包含 Windows.h)
程式庫 Advapi32.lib
Dll Advapi32.dll

另請參閱

RegCreateKeyEx

RegEnumKeyEx

RegEnumValue

RegOpenKeyEx

RegQueryInfoKey

登錄函式

登錄概觀