更改安全对象的访问安全性
打印机、服务、注册表项、DCOM 应用程序和 WMI 命名空间都是安全对象。 对安全对象的访问受安全描述符保护,后者指定具有访问权限的用户。 从 Windows Vista 开始,许多安全对象都有用于获取或设置安全描述符的方法。 使用适当的权限,可以读取或更改安全对象上的安全描述符。 使用这些方法,可以控制哪些用户帐户或组有权访问打印机、服务、WMI 命名空间或其他对象。 有关安全描述符及其在 WMI 中的用法的详细信息,请参阅访问 WMI 安全对象。
本主题包括以下部分:
对象和安全描述符方法
以下列表包含安全对象必须使你能够读取或更改安全描述符的方法:
WMI 命名空间
提供程序可以仅允许某些组访问 WMI 命名空间中的数据,从而建立了安全性。 命名空间安全性由 __SystemSecurity 类上的方法控制。 从 Windows Vista 开始,GetSecurityDescriptor 和 SetSecurityDescriptor 方法返回并写入 __SecurityDescriptor 对象。 有关详细信息,请参阅设置命名空间安全描述符。
注册表项
从 Windows Vista 开始,你可以保护注册表项,避免未经授权的用户进行更改。 StdRegProv 类具有 GetSecurityDescriptor 和 SetSecurityDescriptor 方法。 这些方法返回并写入 Win32_SecurityDescriptor 对象。
打印机
从 Windows Vista 开始,你可以使用 GetSecurityDescriptor 和 SetSecurityDescriptor 方法保护对 Win32_Printer 类实例的访问。 这些方法返回并写入 Win32_SecurityDescriptor 对象。
服务
从 Windows Vista 开始,你可以使用 GetSecurityDescriptor 和 SetSecurityDescriptor 方法保护对 Win32_Service 类实例的访问。 这些方法返回并写入 Win32_SecurityDescriptor 对象。
DCOM 应用程序
DCOM 应用程序实例具有多个安全描述符。 从 Windows Vista 开始,使用 Win32_DCOMApplicationSetting 类的方法获取或更改各种安全描述符。 安全描述符作为 Win32_SecurityDescriptor 类的实例返回。
若要获取或更改配置权限,请调用 GetConfigurationSecurityDescriptor 或 SetConfigurationSecurityDescriptor 方法。
若要获取或更改访问权限,请调用 GetAccessSecurityDescriptor 或 SetAccessSecurityDescriptor 方法。
若要获取或更改启动和激活权限,请调用 GetLaunchSecurityDescriptor 或 SetLaunchSecurityDescriptor 方法,
文件
GetSecurityDescriptor 和 SetSecurityDescriptor 方法位于 Win32_LogicalFileSecuritySetting 类中,而不是在 CIM_DataFile 类中。
共享
GetSecurityDescriptor 和 SetSecurityDescriptor 方法在 Win32_LogicalShareSecuritySetting 类中,而不是在 Win32_Share 类中。
注意
如果在对 SetSecurityDescriptor 方法的调用中未指定新的安全访问控制列表 (SACL),则目标安全对象上的安全描述符 SACL 将设置为 NULL,这样就不会保留以前的 SACL 设置。
在安全描述符格式之间转换
安全描述符是复杂的二进制字节数组,通常必须使用 C++ 创建和更改。 使用 Get 方法之一获取安全描述符后,Win32_SecurityDescriptorHelper 类将提供将安全描述符转换为安全描述符定义语言 (SDDL) 或 Win32_SecurityDescriptor 实例的方法。
可以在 Win32_SecurityDescriptor 实例或 SDDL 中更轻松地操作访问控制列表 (ACL)。 有关 WMI 中安全描述符的结构和使用的详细信息,请参阅 WMI 安全描述符对象。
在 C++ 或 C# 中,使用转换函数将二进制安全描述符转换为安全描述符定义语言 (SDDL)。 若要修改 C++ 应用程序中的安全描述符值,请使用 ConvertSecurityDescriptorToStringSecurityDescriptor 和 ConvertStringSecurityDescriptorToSecurityDescriptor。
安全问题
建议非常谨慎地更改安全描述符,以免损害对象的安全性。 请注意,随机访问控制列表 (DACL) 中访问控制条目 (ACE) 的顺序可能会影响访问安全性。 有关详细信息,请参阅 DACL 中 ACE 的顺序。
相关主题