RegLoadAppKeyW 函式 (winreg.h)
將指定的登錄區載入為應用程式 Hive。
語法
LSTATUS RegLoadAppKeyW(
[in] LPCWSTR 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 和更早版本中,每個進程一次只能載入一個 hive RegLoadAppKey。
使用
若要編譯使用此函式的應用程式,請將_WIN32_WINNT定義為0x0600或更新版本。 如需詳細資訊,請參閱使用 Windows 標頭
注意
winreg.h 標頭會將 RegLoadAppKey 定義為別名,根據 UNICODE 預處理器常數的定義,自動選取此函式的 ANSI 或 Unicode 版本。 混合使用編碼中性別名與非編碼中性的程序代碼,可能會導致編譯或運行時間錯誤不符。 如需詳細資訊,請參閱函式原型的
要求
要求 | 價值 |
---|---|
最低支援的用戶端 | Windows Vista [僅限傳統型應用程式] |
支援的最低伺服器 | Windows Server 2008 [僅限傳統型應用程式] |
目標平臺 | 窗戶 |
標頭 | winreg.h (包括 Windows.h) |
連結庫 | Advapi32.lib |
DLL | Advapi32.dll |