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

開啟登錄機碼的控制碼。 RegCreateKeyExRegOpenKeyEx函式會傳回此控制碼。 它不能是其中一個預先定義的索引鍵。 函式會將 hKey 對應至 hNewHKey 機碼。 這只會影響呼叫進程。

如果 hNewHKeyNull,函式會還原預先定義索引鍵的預設對應。

傳回值

如果函式成功,傳回值會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

另請參閱

DllRegisterServer

登錄函式

登錄概觀