__SystemSecurity 類別的 GetSD 方法
GetSD方法會取得使用者所連線之命名空間的安全性描述元。 這個方法會以二進位位元組陣列格式傳回安全性描述元。 如果您要撰寫腳本,請使用 GetSecurityDescriptor 方法。 如需詳細資訊,請參閱 保護 WMI 命名空間 ,以及 變更安全性物件上的存取安全性。
使用者必須具有 READ_CONTROL 許可權。 根據預設,系統管理員擁有該許可權。 實際使用的安全性描述元唯一部分是 DACL () 的任意存取控制清單。 DACL 可以同時包含繼承和非繼承的 ACE。 允許拒絕和允許 ACE。
如果您是使用 C++ 進行程式設計,則可以使用 SDDL操作二進位安全性描述元,以及 ConvertSecurityDescriptorToStringSecurityDescriptor 和 ConvertStringSecurityDescriptorToSecurityDescriptor的轉換方法。
語法
HRESULT GetSD(
[out] uint8 SD[]
);
參數
-
SD [out]
-
二進位位元組陣列格式的安全性描述元。
傳回值
這個方法會傳回 HRESULT ,指出方法呼叫的狀態。 下列清單列出 對 GetSD具有重要性的傳回值。 針對腳本和 Visual Basic 應用程式,可以從 OutParameters.ReturnValue取得結果。 如需詳細資訊,請參閱 建構 InParameters 物件和剖析 OutParameters 物件。
-
S_OK
-
成功執行的方法。
-
WBEM_E_ACCESS_DENIED
-
呼叫端沒有足夠的許可權可呼叫這個方法。
-
WBEM_E_METHOD_DISABLED
-
嘗試在不支援的系統上執行這個方法。
備註
如需以程式設計方式或手動修改命名空間安全性的詳細資訊,請參閱 保護 WMI 命名空間。
範例
下列腳本示範如何使用 GetSD 來取得 Root\Cimv2 命名空間的目前安全性描述元,並將它變更為 DisplaySD中顯示的位元組陣列。
Set objServices = GetObject("winmgmts:root\cimv2")
Set CimV2 = objServices.Get("__SystemSecurity=@")
ReturnValue = Cimv2.GetSD(arrSD)
If Err <> 0 Then
WScript.Echo "Method returned error " & ReturnValue
End If
DisplaySD = "SD = {"
For I = Lbound(arrSD) To Ubound(arrSD)
DisplaySD = DisplaySD & arrSD(I)
If I <> Ubound(arrSD) Then
DisplaySD = DisplaySD & ","
End If
Next
DisplaySD = DisplaySD & "}"
WScript.Echo DisplaySD
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 |
Windows Vista |
最低支援的伺服器 |
Windows Server 2008 |
命名空間 |
所有 WMI 命名空間 |