Partager via


Méthode GetSecurityDescriptor de la classe Win32_Printer

La méthode GetSecurityDescriptor retourne le descripteur de sécurité qui contrôle l’accès à l’imprimante. Le descripteur est retourné en tant que instance de Win32_SecurityDescriptor. Pour plus d’informations, consultez Modification de la sécurité d’accès sur des objets sécurisables.

Cette rubrique utilise la syntaxe MOF (Managed Object Format). Pour plus d’informations sur l’utilisation de cette méthode, consultez Appel d’une méthode.

Syntaxe

uint32 GetSecurityDescriptor(
  [out] Win32_SecurityDescriptor Descriptor
);

Paramètres

Descripteur [out]

Descripteur de sécurité associé à l’imprimante.

Valeur retournée

Retourne l’une des valeurs répertoriées dans la liste suivante, ou une autre valeur pour indiquer une erreur. Pour obtenir des codes d’erreur supplémentaires, consultez Constantes d’erreur WMI ou WbemErrorEnum. Pour connaître les valeurs HRESULT générales, consultez Codes d’erreur système.

0

Opération terminée correctement.

2

L’utilisateur n’a pas accès aux informations demandées.

8

Échec inconnu.

9

L’utilisateur ne dispose pas des privilèges adéquats pour exécuter la méthode.

21

Un paramètre spécifié dans l’appel de méthode n’est pas valide.

Notes

Le Win32_SecurityDescriptor instance représente un type de données SECURITY_DESCRIPTOR_CONTROL et contient une liste de contrôle d’accès discrétionnaire (DACL) et une liste de contrôle d’accès système (SACL). Pour plus d’informations, consultez listes Access Control.

Si seSecurityPrivilege n’est pas accordé ou activé lors de l’obtention d’un descripteur de sécurité, seule la liste de contrôle d’accès d’accès est retournée dans le descripteur de sécurité retourné. Pour plus d’informations, consultez Constantes de privilèges et exécution d’opérations privilégiées.

Exemples

L’exemple de code VBScript suivant répertorie les imprimantes attachées à l’ordinateur local et obtient le descripteur de sécurité pour chaque imprimante. Ensuite, les entrées de contrôle d’accès (ACE) de la liste de contrôle d’accès discrétionnaire (DACL) sont extraites pour déterminer quels utilisateurs ont accès à l’imprimante.

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

Spécifications

Condition requise Valeur
Client minimal pris en charge
Windows Vista
Serveur minimal pris en charge
Windows Server 2008
Espace de noms
Racine\CIMV2
MOF
Win32_Printer.mof
DLL
CIMWin32.dll

Voir aussi

Win32_Printer

Constantes de privilèges

Objets de descripteur de sécurité WMI

Modification de la sécurité d’accès sur les objets sécurisables