更改安全对象上的访问安全性

打印机、服务、注册表项、DCOM 应用程序和 WMI 命名空间是安全对象。 对安全对象的访问权限受 安全描述符的保护,该描述符指定有权访问的用户。 从 Windows Vista 开始,许多安全对象具有获取或设置安全描述符的方法。 使用适当的权限,可以在安全对象上读取或更改安全描述符。 使用这些方法,可以控制哪些用户帐户或组有权访问打印机、服务、WMI 命名空间或其他对象。 有关安全描述符及其在 WMI 中使用的详细信息,请参阅 访问 WMI 安全对象

本主题讨论了以下部分:

对象和安全描述符方法

以下列表包含安全对象必须允许读取或更改安全描述符的方法:

注意

在对 SetSecurityDescriptor 方法的调用中未指定新的安全访问控制列表 (SACL) 时,目标安全对象上的安全描述符 SACL 设置为 NULL,以便上一个 SACL 设置不会持久保存。

 

在安全描述符格式之间转换

安全描述符是通常必须在 C++ 中创建和更改的复杂二进制字节数组。 使用 Get 方法之一获取安全描述符后, Win32_SecurityDescriptorHelper 类提供了将安全描述符转换为 安全描述符定义语言 (SDDL) Win32_SecurityDescriptor 实例的方法。

可以在 Win32_SecurityDescriptor 实例或 SDDL 中更轻松地操作 访问控制 列表 (ACL) 。 有关 WMI 中安全描述符的结构和使用的详细信息,请参阅 WMI 安全描述符对象

在 C++ 或 C# 中,使用转换函数将二进制安全描述符转换为 安全描述符定义语言 (SDDL) 。 若要在 C++ 应用程序中修改安全描述符值,请使用 ConvertSecurityDescriptorToStringSecurityDescriptorConvertStringSecurityDescriptorToSecurityDescriptor

安全问题

建议谨慎地更改安全描述符,以便对象的安全性不会受到损害。 请注意,访问控制条目的顺序 (ACE) 在自由裁量访问控制列表中 (DACL) 可能会影响访问安全性。 有关详细信息,请参阅 DACL 中的 ACE 顺序

WMI 安全描述符对象

安全描述符帮助程序类

安全最佳做法

维护 WMI 安全性

访问控制

访问 WMI 命名空间