RegLoadAppKeyA 函式 (winreg.h)
將指定的登錄區載入為應用程式 Hive。
語法
LSTATUS RegLoadAppKeyA(
[in] LPCSTR lpFile,
[out] PHKEY phkResult,
[in] REGSAM samDesired,
[in] DWORD dwOptions,
DWORD Reserved
);
參數
[in] lpFile
Hive 檔案的名稱。 此 Hive 必須使用 RegSaveKey 或 RegSaveKeyEx 函式建立。 如果檔案不存在,則會使用指定的名稱建立空的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 |