共用方式為


安全地存取登錄機碼

客戶問題經常會追蹤到外部元件,例如執行下列動作的第三方 裝置安裝應用程式

  • 刪除重要的登錄機碼。

  • 修改重要登錄機碼的訪問許可權。

使用登錄機碼的KEY_ALL_ACCESS訪問許可權,導致外部元件發生許多問題。 從 Windows Server 2003 開始, SetupDiCreateDevRegKey 只會授與KEY_READ和KEY_WRITE訪問許可權,而不是KEY_ALL_ACCESS。 從 Windows Vista 開始,會強制執行其他KEY_ALL_ACCESS限制。

請遵循下列指導方針安全地存取登錄機碼:

  • 僅使用 SetupAPIConfiguration Manager 函式和其他支援的裝置相關 API 來開啟裝置登錄機碼,特別是裝置 的硬體機碼軟體密鑰

    這些函式可解決因訪問許可權限制所造成的常見問題。

  • 不同版本的 Windows 之間,登錄機碼的位置和格式可能會變更。 請勿假設用於裝置和驅動程式安裝之登錄機碼或值的位置、格式或意義。

    如需登錄機碼和樹狀結構的詳細資訊,請參閱 裝置和驅動程式的登錄樹狀架構和機碼

  • 請勿使用登錄直接存取或修改裝置的內部設定。

  • 只要求每個工作所需的最小存取權限,例如:

    • KEY_SET_VALUE

    • KEY_CREATE_SUB_KEY

    • KEY_QUERY_VALUE

    • KEY_ENUMERATE_SUB_KEYS

  • 請勿直接在登錄中開啟裝置安裝類別機碼。 如同任何登錄機碼,裝置安裝類別機碼的位置和名稱可能會在 Windows 版本之間變更。 如需如何正確存取裝置安裝類別機碼的資訊,請參閱 開啟裝置安裝類別的登錄機碼

  • 請勿直接在登錄中開啟裝置介面類別機碼。 如同任何登錄機碼,裝置介面類別機碼的位置和名稱可能會在 Windows 版本之間變更。

    若要安全地開啟裝置介面類別密鑰,請使用CM_Open_Class_Key搭配在 ulFlags 參數中設定CM_OPEN_CLASS_KEY_INTERFACE,或使用 SetupDiOpenClassRegKeyEx 並在 Flags 參數中設定DIOCR_INSTALLER。

  • 僅使用 INF 指示詞來修改保留供作業系統使用的登錄機碼。 如需詳細資訊,請參閱 INF 指示詞的摘要

  • 類別安裝程式共同安裝程式 無法呼叫登錄函式,以建立、變更或刪除保留供操作系統使用的登錄值。

如需登錄機碼訪問許可權的詳細資訊,請參閱 登錄機碼安全性和訪問許可權