SetSecurityDescriptor-Methode der _ Win32-Druckerklasse

Die SetSecurityDescriptor-Methode schreibt eine aktualisierte Version des Sicherheitsdeskriptors, der den Zugriff auf den Drucker steuert. Der Sicherheitsdeskriptor ist eine Instanz der Win32 _ SecurityDescriptor-Klasse. Weitere Informationen finden Sie unter Ändern der Zugriffssicherheit für sicherungsfähige Objekte.

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

Syntax

uint32 SetSecurityDescriptor(
  [in] Win32_SecurityDescriptor Descriptor
);

Parameter

Deskriptor [ In]

Der Sicherheitsdeskriptor, der dem Drucker zugeordnet ist.

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 angegebener Parameter ist ungültig.

Bemerkungen

Die Win32 _ SecurityDescriptor-Instanz stellt einen SECURITY _ DESCRIPTOR _ CONTROL-Datentyp dar und enthält eine DACL (Discretionary Access Control List) und eine SACL (System Access Control List). Weitere Informationen finden Sie unter Access Control Lists.

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

Sie können sowohl die DACL als auch die SACL in der Win32 _ SecurityDescriptor-Instanz aktualisieren, wenn Sie diese Methode aufrufen. Sie können jedoch auch nur die DACL oder nur die SACL aktualisieren.

Die folgenden Werte in SECURITY _ DESCRIPTOR _ CONTROL bestimmen, ob die DACL, die SACL oder beide aktualisiert werden.

  • _SE DACL _ PRESENT

    Gibt an, dass die DACL aktualisiert werden soll. Wenn dies nicht festgelegt ist, behält WMI den ursprünglichen Wert der DACL bei.

  • _SE SACL _ PRESENT

    Gibt an, dass die SACL aktualisiert werden soll. Wenn dies nicht festgelegt ist, behält WMI den ursprünglichen Wert der SACL bei. Zum Aktualisieren der SACL muss für das Konto die SeSecurityPrivilege-Berechtigung aktiviert sein. Für die Skripterstellung lautet der Berechtigungsname SeSecurityPrivilege. Weitere Informationen finden Sie unter Berechtigungskonstanten.

Wenn die Eigenschaften des Gruppentreuhänders und des Besitzertreuhänders nicht NULL sind, werden sie aktualisiert. Andernfalls behält WMI die ursprünglichen Werte bei. Weitere Informationen finden Sie unter WMI-Sicherheitsdeskriptorobjekte.

Wenn eine neue SACL in einem Aufruf dieser Methode NULL ist, bleibt die Sicherheitsbeschreibungs-SACL für das sicherungsfähige Zielobjekt unverändert.

Beispiele

Das PowerShell-Beispiel Copy-ACLToPrinter Ersetzt die Berechtigungen (ACL) von einem Drucker in einen anderen.

Im folgenden PowerShell-Codebeispiel wird beschrieben, wie sie den Sicherheitsdeskriptor für einen Drucker festlegen.

# Specify the user or group
$user = "everyone"

# create instances of necessary classes
$SD = ([WMIClass] "Win32_SecurityDescriptor").CreateInstance()
$ace = ([WMIClass] "Win32_Ace").CreateInstance()
$Trustee = ([WMIClass] "Win32_Trustee").CreateInstance()

# Translate a name of user or group to SID
$SID = (new-object security.principal.ntaccount $user).translate([security.principal.securityidentifier])

# Get binary form from SID and byte Array
[byte[]] $SIDArray = ,0 * $SID.BinaryLength
$SID.GetBinaryForm($SIDArray,0)

# Fill Trustee object parameters
$Trustee.Name = $user
$Trustee.SID = $SIDArray

# Set AccessMask which can contain following values:
# Takeownership - 524288
# ReadPermissions - 131072
# ChangePermissions - 262144
# ManageDocuments - 983088
# ManagePrinters - 983052
# Print + ReadPermissions - 131080
$ace.AccessMask = 983052

# Set AceType. Can be 0 (Allow), or 1 (Deny), or 2 (System Audit)
$ace.AceType = 0
$ace.AceFlags = 0  

# Write Win32_Trustee object to Win32_Ace Trustee property
$ace.Trustee = $Trustee

# Write Win32_Ace and Win32_Trustee objects to SecurityDescriptor object
$SD.DACL = $ace

# Set SE_DACL_PRESENT control flag
$SD.ControlFlags = 0x0004

# Get printer object. For example 'CutePDF Writer' printer object
$Printer = gwmi win32_printer -filter "name = 'CutePDF Writer'"

# Enable SeSecurityPrivilege privilegies
$Printer.psbase.Scope.Options.EnablePrivileges = $true

# Invoke SetSecurityDescriptor method and write new ACE to specified
# printer ACL.
$Printer.SetSecurityDescriptor($SD)

Requirements (Anforderungen)

Anforderung Wert
Unterstützte Mindestversion (Client)
Windows Vista
Unterstützte Mindestversion (Server)
Windows Server 2008
Namespace
\Stamm-CIMV2
MOF
Win32 _ Printer.mof
DLL
CIMWin32.dll

Weitere Informationen

_Win32-Drucker

Berechtigungskonstanten

WMI-Sicherheitsbeschreibungsobjekte

Ändern der Zugriffssicherheit für sicherungsfähige Objekte