Win32_Printer 类的 GetSecurityDescriptor 方法
GetSecurityDescriptor 方法返回控制对打印机的访问的安全描述符。 描述符作为 Win32_SecurityDescriptor 实例返回。 有关详细信息,请参阅 更改安全对象的访问安全性。
本主题使用托管对象格式 (MOF) 语法。 有关使用此方法的详细信息,请参阅 调用方法。
语法
uint32 GetSecurityDescriptor(
[out] Win32_SecurityDescriptor Descriptor
);
参数
-
描述符 [out]
-
与打印机关联的安全描述符。
返回值
返回以下列表中列出的值之一,或返回其他值以指示错误。 有关其他错误代码,请参阅 WMI 错误常量 或 WbemErrorEnum。 有关常规 HRESULT 值,请参阅 系统错误代码。
-
0
-
成功完成。
-
2
-
用户无权访问请求的信息。
-
8
-
未知失败。
-
9
-
用户没有足够的权限来执行方法。
-
21
-
方法调用中指定的参数无效。
备注
Win32_SecurityDescriptor 实例表示SECURITY_DESCRIPTOR_CONTROL数据类型,包含 DACL) (自由访问控制列表,以及 SACL) (系统访问控制列表。 有关详细信息,请参阅访问控制列表。
如果在获取安全描述符时未授予或启用 SeSecurityPrivilege ,则在返回的安全描述符中仅返回 DACL。 有关详细信息,请参阅特权常量和执行特权操作。
示例
以下 VBScript 代码示例列出了连接到本地计算机的打印机,并获取每个打印机的安全描述符。 然后,提取 ( (DACL) 的任意访问控制列表中的 ACE) 访问控制条目,以确定哪些用户有权访问打印机。
SE_DACL_PRESENT = &h4
ACCESS_ALLOWED_ACE_TYPE = &h0
ACCESS_DENIED_ACE_TYPE = &h1
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate, (Security)}!\\" & strComputer & "\root\cimv2")
Set objWMIService = GetObject("winmgmts:")
Set colInstalledPrinters = objWMIService.ExecQuery _
("Select * from Win32_Printer")
For Each objPrinter in colInstalledPrinters
Wscript.Echo "Name: " & objPrinter.Name
' Get security descriptor for printer
Return = objPrinter.GetSecurityDescriptor( objSD )
If ( return <> 0 ) Then
WScript.Echo "Could not get security descriptor: " & Return
wscript.Quit Return
End If
' Extract the security descriptor flags
intControlFlags = objSD.ControlFlags
If intControlFlags AND SE_DACL_PRESENT Then
' Get the ACE entries from security descriptor
arrACEs = objSD.DACL
For Each objACE in arrACEs
' Get all the trustees and determine which have access to printer
WScript.Echo objACE.Trustee.Domain & "\" & objACE.Trustee.Name
If objACE.AceType = ACCESS_ALLOWED_ACE_TYPE Then
WScript.Echo vbTab & "User has access to printer"
ElseIf objACE.AceType = ACCESS_DENIED_ACE_TYPE Then
WScript.Echo vbTab & "User does not have access to the printer"
End If
Next
Else
WScript.Echo "No DACL found in security descriptor"
End If
Next
要求
要求 | 值 |
---|---|
最低受支持的客户端 |
Windows Vista |
最低受支持的服务器 |
Windows Server 2008 |
命名空间 |
Root\CIMV2 |
MOF |
|
DLL |
|