在建立命名空間時設定安全性
建立命名空間的 Managed 物件格式 (MOF) 檔案,也可以藉由在安全性描述元定義語言中,將NamespaceSecuritySDDL限定詞包含在安全性描述元定義語言 (SDDL) 格式,來定義命名空間的安全性描述項。
您可以使用 NamespaceSecuritySDDL 來保護任何命名空間。 您也可以在簡單的 MOF 檔案中使用這個限定詞,來改變現有命名空間上的安全描述項。 SDDL 字串是由 WMI 處理,以建立命名空間安全性,但不會儲存為字串。 如果未指定任何安全性描述項,則會使用預設安全性。 如需詳細資訊,請參閱 設定 Namepace 安全性描述元。
下列程式會設定 root\MyNamespace 命名空間的安全性描述項。 SDDL 字串會將擁有者和群組設定為已驗證的使用者,並指定由子命名空間繼承的 DACL (選擇性存取控制清單 ) 。 DACL 可讓使用者有權讀取資料、執行方法、將資料寫入提供者類別,並使用遠端存取:WBEM_ENABLE、WBEM_METHOD_EXECUTE、WBEM_WRITE_PROVIDER、WBEM_REMOTE_ACCESS。 如需詳細資訊,請參閱 WMI 命名空間的存取。
若要設定命名空間 DACL
(MOF) 檔案建立 Managed 物件格式,或修改現有的 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"; };
請注意,SDDL 字串區分大小寫:字母必須大寫。
下列程式碼範例將 SDDL 字串中的字母 「o」 和 「g」 顯示為小寫,並會導致Mofcomp.exe傳回錯誤。
#pragma autorecover #pragma namespace("\\\\.\\root") [NamespaceSecuritySDDL("o:BAg:BAD:(A;CI;0x60003;;;WD)")] Instance of __Namespace { Name = "MyNamespace"; };
執行 Mofcomp.exe 以編譯 MOF 檔案。
c:\mofcomp MyNamespace_security.mof
在 C++ 中,使用 IMoFCompiler 方法。
如果您嘗試設定命名空間 DACL 失敗,請考慮下列錯誤訊息:
錯誤 描述 WBEM_E_INVALID_PARAMETER 沒有繼承的 DACL。 或者,呼叫端違反父命名空間中的 DACL 或 SD。 WBEM_E_ACCESS_DENIED 呼叫端沒有在 MOF 中更新 SDDL 的許可權。
相關主題