Freigeben über


GetSecurityDescriptor-Methode der Win32_Printer-Klasse

Die GetSecurityDescriptor-Methode gibt den Sicherheitsdeskriptor zurück, der den Zugriff auf den Drucker steuert. Der Deskriptor wird als instance von Win32_SecurityDescriptor zurückgegeben. Weitere Informationen finden Sie unter Ändern der Zugriffssicherheit für sicherungsfähige Objekte.

In diesem Thema wird MOF-Syntax (Managed Object Format) verwendet. Weitere Informationen zur Verwendung dieser Methode finden Sie unter Aufrufen einer Methode.

Syntax

uint32 GetSecurityDescriptor(
  [out] Win32_SecurityDescriptor Descriptor
);

Parameter

Deskriptor [out]

Die dem Drucker zugeordnete Sicherheitsbeschreibung.

Rückgabewert

Gibt einen der in der folgenden Liste aufgeführten Werte oder einen anderen Wert zurück, um einen Fehler anzugeben. Weitere Fehlercodes finden Sie unter WMI-Fehlerkonstanten oder WbemErrorEnum. Allgemeine HRESULT-Werte finden Sie unter Systemfehlercodes.

0

Erfolgreicher Abschluss.

2

Der Benutzer hat keinen Zugriff auf die angeforderten Informationen.

8

Unbekannter Fehler.

9

Der Benutzer verfügt nicht über ausreichende Berechtigungen zum Ausführen der Methode.

21

Ein im Methodenaufruf angegebenen Parameter ist ungültig.

Bemerkungen

Die Win32_SecurityDescriptor instance stellt einen SECURITY_DESCRIPTOR_CONTROL Datentyp dar und enthält eine diskretionäre Zugriffssteuerungsliste (Discretionary Access Control List, DACL) und eine Systemzugriffssteuerungsliste (System Access Control List, SACL). Weitere Informationen finden Sie unter Access Control Listen.

Wenn das SeSecurityPrivilege beim Abrufen eines Sicherheitsdeskriptors nicht gewährt oder aktiviert wird, wird nur die DACL im zurückgegebenen Sicherheitsdeskriptor zurückgegeben. Weitere Informationen finden Sie unter Berechtigungskonstanten und Ausführen privilegierter Vorgänge.

Beispiele

Das folgende VBScript-Codebeispiel listet die Drucker auf, die an den lokalen Computer angefügt sind, und ruft die Sicherheitsbeschreibung für jeden Drucker ab. Anschließend werden die Zugriffssteuerungseinträge (Access Control Entries , ACE) in der diskretionären Zugriffssteuerungsliste (DACL ) extrahiert, um zu ermitteln, welche Benutzer Zugriff auf den Drucker haben.

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

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client)
Windows Vista
Unterstützte Mindestversion (Server)
WindowsServer 2008
Namespace
Root\CIMV2
MOF
Win32_Printer.mof
DLL
CIMWin32.dll

Siehe auch

Win32_Printer

Berechtigungskonstanten

WMI-Sicherheitsdeskriptorobjekte

Ändern der Zugriffssicherheit für sicherungsfähige Objekte