__SystemSecurity 類別的 GetSD 方法

GetSD方法會取得使用者所連線之命名空間的安全性描述元。 這個方法會以二進位位元組陣列格式傳回安全性描述元。 如果您要撰寫腳本,請使用 GetSecurityDescriptor 方法。 如需詳細資訊,請參閱 保護 WMI 命名空間 ,以及 變更安全性物件上的存取安全性

使用者必須具有 READ_CONTROL 許可權。 根據預設,系統管理員擁有該許可權。 實際使用的安全性描述元唯一部分是 DACL () 的任意存取控制清單。 DACL 可以同時包含繼承和非繼承的 ACE。 允許拒絕和允許 ACE。

如果您是使用 C++ 進行程式設計,則可以使用 SDDL操作二進位安全性描述元,以及 ConvertSecurityDescriptorToStringSecurityDescriptorConvertStringSecurityDescriptorToSecurityDescriptor的轉換方法。

語法

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 命名空間

另請參閱

WMI 系統類別

__SystemSecurity

WMI 安全性常數

Win32_ACE

__SystemSecurity::SetSD

Security_Descriptor

Win32_SecurityDescriptor

保護 WMI 命名空間