共用方式為


設定命名空間建立的安全性

建立命名空間的 Managed 物件格式 (MOF) 檔案也可以藉由在 安全性描述元定義語言 (SDDL) 格式,將命名空間 NamespaceSecuritySDDL 限定符,以定義命名空間安全性描述元。

您可以使用 NamespaceSecuritySDDL 來保護任何命名空間。 您也可以在簡單的 MOF 檔案中使用這個限定符來改變現有命名空間上的安全性描述元。 SDDL 字串會由 WMI 處理,以建立命名空間安全性,但不會儲存為字串。 如果未指定任何安全性描述元,則會使用預設安全性。 如需詳細資訊,請參閱 設定 Namepace 安全性描述元

下列程式會設定 root\MyNamespace 命名空間的安全性描述項。 SDDL 字串會將擁有者和群組設定為已驗證的使用者,並指定子命名空間繼承的 選擇性存取控制清單 (DACL)。 DACL 可讓使用者有權讀取資料、執行方法、將數據寫入提供者類別,並使用遠端訪問:WBEM_ENABLEWBEM_METHOD_EXECUTEWBEM_WRITE_PROVIDERWBEM_REMOTE_ACCESS。 如需詳細資訊,請參閱 存取 WMI 命名空間

若要設定命名空間 DACL

  1. 建立一個 Managed Object Format (MOF) 檔案,或修改您現有的 MOF 檔案,以定義命名空間,並使用 SDDL 字串新增 NamespaceSecuritySDDL 限定符。

    下列程式代碼範例顯示要修改的命名空間是 root\MyNamespace,且檔案名為 MyNamespace_security.mof。

    #pragma autorecover
    #pragma namespace("\\\\.\\root")
    [NamespaceSecuritySDDL ("O:BAG:BAD:(A;CI;0x60003;;;WD)")]
    Instance of __Namespace
    {
      Name = "MyNamespace";
    };
    
  2. 請注意,SDDL 字串區分大小寫:字母必須大寫。

    下列程式代碼範例會將 SDDL 字串中的字母 「o」 和 「g」 顯示為小寫,並會導致 Mofcomp.exe 傳回錯誤。

    #pragma autorecover
    #pragma namespace("\\\\.\\root")
    [NamespaceSecuritySDDL("o:BAg:BAD:(A;CI;0x60003;;;WD)")] 
    Instance of __Namespace
    {
      Name = "MyNamespace";
    };
    
  3. 執行 Mofcomp.exe 以編譯MOF檔案。

    c:\mofcomp MyNamespace_security.mof

    在 C++ 中,使用 IMoFCompiler 方法。

  4. 如果您試著設定命名空間 DACL 失敗,請考慮下列錯誤訊息:

    錯誤 描述
    WBEM_E_INVALID_PARAMETER 沒有繼承的 DACL。 或者,呼叫端已違反父命名空間中的 DACL 或 SD。
    WBEM_E_ACCESS_DENIED 呼叫者沒有權限更新MOF中的SDDL。

     

設定命名空間安全性描述元

命名空間訪問許可權常數

命名空間 ACE 旗標常數

在安全性實體對象上變更存取安全性