離線登錄庫可用來修改使用中系統登錄外部的登錄區。
離線註冊表庫適用於註冊表更新情況,例如維護作業系統映像。 離線登錄函式提供標準登錄功能無法使用的下列功能:
- 離線登錄功能可用來修改任何支援登錄格式的登錄區。 標準登錄功能只能對作用中的登錄區進行變更,而且變更必須與系統上執行的 Windows 版本相容。
- 離線註冊表函式庫只需要讀取權限才能開啟註冊表配置單元檔案,以及寫入權限才能儲存檔案。 在 Hive 中的物件上不會進行其他存取檢查,這使得具有標準用戶許可權者可以修改 Hive。 使用標準登錄功能時,將 hive 載入目前正在使用的登錄是一個需要管理員權限的高級操作。
離線登錄函式不應作為系統登錄函式的替代專案,原因如下:
- 無法使用離線登錄功能在進程之間共用登錄區。
- 離線登錄函式會使用簡單的鎖定,這可能會導致多線程應用程式的效能嚴重降低。
- 在呼叫 ORSaveHive 函式之前,不會儲存使用離線登錄函式所做的變更。
應用程式不應該使用離線登錄功能來略過系統登錄的安全性需求。 若要載入 Hive,未擁有特殊許可權執行的應用程式可以使用 RegLoadAppKey 函式,而不是 RegLoadKey 函式。
Windows Server 2003 和 Windows XP: 不支援 RegLoadAppKey 函式。
離線登錄區 是使用離線登錄功能載入記憶體的登錄區。 若要建立空的離線登錄區,請使用 ORCreateHive 函式。 若要修改現有的登錄區,請使用 RegSaveKey 或 RegSaveKeyEx 函式,將 hive 從使用中系統登錄儲存至檔案,然後使用 OROpenHive 函式來開啟檔案。
ORCreateHive 和 OROpenHive 函數會傳回離線登錄集區根機碼的控制代碼。 此句柄可以像離線登錄區中任何其他索引鍵的句柄一樣使用,但有下列例外狀況:ORCreateKey 和 OROpenKey 函式無法用來將句柄傳回根機碼:ORCloseKey 函式無法用來關閉根索引鍵;和 ORDeleteKey 函式無法用來刪除根密鑰。 在所有這些情況下,函式都會失敗,出現ERROR_INVALID_PARAMETER。
使用 ORCreateKey 函式,將機碼新增至開啟的離線登錄區,以及 ORSetValue 函式來設定機碼的值。 離線登錄庫支援其他基本登錄作業,例如列舉、擷取和刪除機碼和值,以及設定安全性與虛擬化行為等索引鍵屬性。 如需函式清單,請參閱 離線登錄庫函式。
若要儲存對開啟離線登錄區所做的變更,請使用 ORSaveHive 函式,將hive儲存至檔案。 (除非呼叫 ORSaveHive,否則變更不會保存。儲存Hive之後,請使用 ORCloseHive 函式來關閉Hive並釋放與其相關聯的資源。
只有在使用 OROpenHive 函式開啟離線登錄區時,才會驗證該離線登錄區。 如果蜂巢損毀,作業只會失敗,不會嘗試修理蜂巢。 在 hive 載入至一個作用中的登錄之前,將不會對 hive 中的物件執行存取檢查,這需要透過 RegLoadKey 函式來完成。
離線登錄函式不支援 預先定義的機碼。
傳遞至離線登錄函式的所有機碼和值名稱字串都必須是 Unicode。
相關主題