RegOverridePredefKey 函式 (winreg.h)
將預先定義的登錄機碼對應至指定的登錄機碼。
語法
LSTATUS RegOverridePredefKey(
[in] HKEY hKey,
[in, optional] HKEY hNewHKey
);
參數
[in] hKey
下列其中一個 預先定義索引鍵的控制碼:
- HKEY_CLASSES_ROOT
- HKEY_CURRENT_CONFIG
- HKEY_CURRENT_USER
- HKEY_LOCAL_MACHINE
- HKEY_PERFORMANCE_DATA
- HKEY_USERS
[in, optional] hNewHKey
開啟登錄機碼的控制碼。 RegCreateKeyEx或RegOpenKeyEx函式會傳回此控制碼。 它不能是其中一個預先定義的索引鍵。 函式會將 hKey 對應至 hNewHKey 機碼。 這只會影響呼叫進程。
如果 hNewHKey 為 Null,函式會還原預先定義索引鍵的預設對應。
傳回值
如果函式成功,傳回值會ERROR_SUCCESS。
如果函式失敗,傳回值是 Winerror.h 中定義的非零錯誤碼。 您可以使用 FormatMessage 函式搭配 FORMAT_MESSAGE_FROM_SYSTEM 旗標來取得錯誤的泛型描述。
備註
RegOverridePredefKey函式適用于軟體安裝程式。 其可讓它們重新對應預先定義的金鑰、載入將安裝在系統上的 DLL 元件、呼叫 DLL 中的進入點,以及檢查元件嘗試進行的登錄變更。 然後,安裝程式可以將這些變更寫入 DLL 預定的位置,或在寫入資料之前進行資料變更。
例如,請考慮安裝 ActiveX 控制項做為應用程式安裝的一部分的安裝程式。 安裝程式需要呼叫控制項的 DllRegisterServer 進入點,才能讓控制項自行註冊。 在此呼叫之前,安裝程式可以呼叫RegOverridePredefKey,將HKEY_CLASSES_ROOT重新對應至暫存金鑰,例如HKEY_CURRENT_USER\TemporaryInstall\DllRegistration。 然後它會呼叫 DllRegisterServer,這會導致 ActiveX 控制項將其登錄專案寫入暫存機碼。 然後安裝程式會再次呼叫 RegOverridePredefKey ,以還原 HKEY_CLASSES_ROOT的原始對應。 安裝程式可以視需要修改寫入暫存金鑰的金鑰,再將它們複製到原始 HKEY_CLASSES_ROOT。
呼叫 RegOverridePredefKey之後,您可以安全地呼叫 RegCloseKey 以關閉 hNewHKey 控制碼。 系統會維護它本身對 hNewHKey的參考。
規格需求
最低支援的用戶端 | Windows 2000 專業版 [僅限傳統型應用程式] |
最低支援的伺服器 | Windows 2000 Server [僅限傳統型應用程式] |
目標平台 | Windows |
標頭 | winreg.h (包括 Windows.h) |
程式庫 | Advapi32.lib |
Dll | Advapi32.dll |