__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 命名空间