Méthode GetSecurityDescriptor de la _ classe Printer Win32
La méthode GetSecurityDescriptor retourne le descripteur de sécurité qui contrôle l’accès à l’imprimante. Le descripteur est retourné sous la forme d’une instance de l’expression 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 format MOF (MOF). 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 [ à]
-
Descripteur de sécurité associé à l’imprimante.
Valeur de retour
Retourne l’une des valeurs répertoriées dans la liste suivante, ou une valeur différente pour indiquer une erreur. Pour obtenir d’autres codes d’erreur, consultez constantes d’erreur WMI ou WbemErrorEnum. Pour obtenir les valeurs de HRESULT générales, consultez codes d’erreur système.
-
0
-
Achèvement réussi.
-
2
-
L’utilisateur n’a pas accès aux informations demandées.
-
8
-
Échec inconnu.
-
9
-
L’utilisateur ne dispose pas des privilèges suffisants pour exécuter la méthode.
-
21
-
Un paramètre spécifié dans l’appel de méthode n’est pas valide.
Notes
L' instance _ Win32 SecurityDescriptor représente un type de données de _ _ contrôle de descripteur de sécurité 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 Access Control Lists.
Si le droit SeSecurityPrivilege n’est pas accordé ou activé lors de l’obtention d’un descripteur de sécurité, seule la liste DACL est retournée dans le descripteur de sécurité retourné. Pour plus d’informations, consultez constantes de privilège et exécution d’opérations privilégiées.
Exemples
L’exemple de code VBScript suivant répertorie les imprimantes connectées à l’ordinateur local et obtient le descripteur de sécurité pour chaque imprimante. 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 les utilisateurs ayant 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 |
\Cimv2 racine |
| MOF |
|
| DLL |
|