Método GetSecurityDescriptor da classe Win32_Printer
O método GetSecurityDescriptor retorna o descritor de segurança que controla o acesso à impressora. O descritor é retornado como uma instância de Win32_SecurityDescriptor. Para obter mais informações, consulte Alterando a segurança de acesso em objetos protegíveis.
Este tópico usa a sintaxe MOF (Managed Object Format). Para obter mais informações sobre como usar esse método, consulte Chamando um método.
Sintaxe
uint32 GetSecurityDescriptor(
[out] Win32_SecurityDescriptor Descriptor
);
Parâmetros
-
Descritor [out]
-
O descritor de segurança associado à impressora.
Valor retornado
Retorna um dos valores listados na lista a seguir ou um valor diferente para indicar um erro. Para obter códigos de erro adicionais, consulte Constantes de erro WMI ou WbemErrorEnum. Para obter valores gerais de HRESULT , consulte Códigos de erro do sistema.
-
0
-
Conclusão bem-sucedida.
-
2
-
O usuário não tem acesso às informações solicitadas.
-
8
-
Falha desconhecida.
-
9
-
O usuário não tem privilégios adequados para executar o método.
-
21
-
Um parâmetro especificado na chamada de método não é válido.
Comentários
A instância Win32_SecurityDescriptor representa um tipo de dados SECURITY_DESCRIPTOR_CONTROL e contém uma DACL ( lista de controle de acesso discricionário ) e uma SACL ( lista de controle de acesso do sistema ). Para obter mais informações, consulte Listas de Controle de Acesso.
Se o SeSecurityPrivilege não for concedido ou habilitado ao obter um descritor de segurança, somente a DACL será retornada no descritor de segurança retornado. Para obter mais informações, consulte Constantes de privilégio e Executando operações privilegiadas.
Exemplos
O exemplo de código VBScript a seguir lista as impressoras anexadas ao computador local e obtém o descritor de segurança para cada impressora. Em seguida, as ACE ( entradas de controle de acesso ) na DACL (lista de controle de acesso discricionário ) são extraídas para determinar quais usuários têm acesso à impressora.
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
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte |
Windows Vista |
Servidor mínimo com suporte |
Windows Server 2008 |
Namespace |
Root\CIMV2 |
MOF |
|
DLL |
|