Compartir a través de


Método GetSecurityDescriptor de la clase Win32_Printer

El método GetSecurityDescriptor devuelve el descriptor de seguridad que controla el acceso a la impresora. El descriptor se devuelve como una instancia de Win32_SecurityDescriptor. Para obtener más información, vea Cambio de seguridad de acceso en objetos protegibles.

En este tema se usa la sintaxis de Managed Object Format (MOF). Para obtener más información sobre el uso de este método, vea Llamar a un método.

Sintaxis

uint32 GetSecurityDescriptor(
  [out] Win32_SecurityDescriptor Descriptor
);

Parámetros

Descriptor [out]

Descriptor de seguridad asociado a la impresora.

Valor devuelto

Devuelve uno de los valores enumerados en la lista siguiente o un valor diferente para indicar un error. Para obtener códigos de error adicionales, consulte Constantes de error de WMI o WbemErrorEnum. Para obtener valores HRESULT generales, consulte Códigos de error del sistema.

0

Se ha realizado correctamente.

2

El usuario no tiene acceso a la información solicitada.

8

Error desconocido.

9

El usuario no tiene privilegios adecuados para ejecutar el método.

21

Un parámetro especificado en la llamada al método no es válido.

Comentarios

La instancia de Win32_SecurityDescriptor representa un tipo de datos SECURITY_DESCRIPTOR_CONTROL y contiene una lista de control de acceso discrecional (DACL) y una lista de control de acceso del sistema (SACL). Para obtener más información, consulte listas de Access Control.

Si no se concede o habilita SeSecurityPrivilege al obtener un descriptor de seguridad, solo se devuelve la DACL en el descriptor de seguridad devuelto. Para obtener más información, vea Constantes de privilegios y Ejecución de operaciones con privilegios.

Ejemplos

En el siguiente ejemplo de código de VBScript se enumeran las impresoras conectadas al equipo local y se obtiene el descriptor de seguridad para cada impresora. A continuación, se extraen las entradas de control de acceso (ACE) de la lista de control de acceso discrecional (DACL) para determinar qué usuarios tienen acceso a la impresora.

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 Value
Cliente mínimo compatible
Windows Vista
Servidor mínimo compatible
Windows Server 2008
Espacio de nombres
Root\CIMV2
MOF
Win32_Printer.mof
Archivo DLL
CIMWin32.dll

Consulte también

Win32_Printer

Constantes de privilegios

Objetos descriptores de seguridad de WMI

Cambio de la seguridad de acceso en objetos protegibles