Compartilhar via


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
Win32_Printer.mof
DLL
CIMWin32.dll

Confira também

Win32_Printer

Constantes de privilégio

Objetos de descritor de segurança WMI

Alterando a segurança de acesso em objetos protegíveis