RegLoadAppKeyW 函式 (winreg.h)

將指定的登錄區載入為應用程式登錄區。

語法

LSTATUS RegLoadAppKeyW(
  [in]  LPCWSTR lpFile,
  [out] PHKEY   phkResult,
  [in]  REGSAM  samDesired,
  [in]  DWORD   dwOptions,
        DWORD   Reserved
);

參數

[in] lpFile

Hive 檔案的名稱。 此 Hive 必須使用 RegSaveKeyRegSaveKeyEx 函 式建立。 如果檔案不存在,則會使用指定的名稱建立空的Hive檔案。

[out] phkResult

載入之 Hive 根索引鍵之句柄的指標。

存取Hive中金鑰的唯一方法是透過此句柄。 登錄會防止應用程式使用金鑰的絕對路徑來存取此登錄區中的機碼。 因此,無法透過登錄的命名空間巡覽至此Hive。

[in] samDesired

遮罩,指定針對傳回的根密鑰所要求的訪問許可權。 如需詳細資訊,請參閱 登錄機碼安全性和訪問許可權

[in] dwOptions

如果此參數REG_PROCESS_APPKEY,則呼叫端載入Hive時無法再次載入。 這可防止另一個呼叫端存取此登錄區。

Reserved

此參數已保留備用。

傳回值

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

如果函式失敗,傳回值是 Winerror.h 中定義的非零錯誤碼。 您可以使用 FormatMessage 函式搭配 FORMAT_MESSAGE_FROM_SYSTEM 旗標,以取得錯誤的一般描述。

備註

不同於 RegLoadKey,RegLoadAppKey 不會在 HKEY_LOCAL_MACHINE 或 HKEY_USERS 下載入 hive。 相反地,Hive 會載入無法列舉的特殊根目錄下。 因此,無法列舉 RegLoadAppKey 目前載入的 Hives。 RegLoadAppKey 所載入之 Hives 的所有作業都必須相對於 phkResult 中傳回的句柄來執行。

如果需要兩個進程在相同的Hive上執行作業,則每個進程都必須呼叫 RegLoadAppKey 以擷取句柄。 在 RegLoadAppKey 作業期間,登錄會確認檔案是否已載入。 如果已載入,登錄會傳回先前載入的Hive句柄,而不是重新載入Hive。

Hive 內的所有金鑰都必須具有相同的安全性描述元,否則函式將會失敗。 此安全性描述項必須授與呼叫者 samDesired 參數所指定的存取權,否則函式將會失敗。 您無法在 Hive 內的任何索引 鍵上使用 RegSetKeySecurity 函式。

在 Windows 8 和更新版本中,每個進程都可以呼叫 RegLoadAppKey 來載入多個 Hives。 在 Windows 7 和更早版本中,每個進程一次只能使用 RegLoadAppKey 載入一個 Hive。

使用 RegLoadAppKey 載入的任何 Hive 都會在使用 RegCloseKey 關閉 Hive 內的所有索引鍵句柄時自動卸除。

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

注意

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

規格需求

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

另請參閱

RegSaveKey

登錄函式

登錄Hive