RegLoadAppKeyA 函式 (winreg.h)

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

語法

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

參數

[in] lpFile

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

[out] phkResult

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

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

[in] samDesired

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

[in] dwOptions

如果此參數REG_PROCESS_APPKEY,呼叫端載入 hive 時,就無法再次載入 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