Condividi tramite


Metodo SetSecurityDescriptor della classe Win32_Printer

Il metodo SetSecurityDescriptor scrive una versione aggiornata del descrittore di sicurezza che controlla l'accesso alla stampante. Il descrittore di sicurezza è un'istanza della classe Win32_SecurityDescriptor. Per altre informazioni, vedere Modifica della sicurezza degli accessi in oggetti a protezione diretta.

In questo argomento viene utilizzata la sintassi MOF (Managed Object Format). Per altre informazioni sull'uso di questo metodo, vedere Chiamata di un metodo.

Sintassi

uint32 SetSecurityDescriptor(
  [in] Win32_SecurityDescriptor Descriptor
);

Parametri

Descrittore [in]

Descrittore di sicurezza associato alla stampante.

Valore restituito

Restituisce uno dei valori elencati nell'elenco seguente o un valore diverso per indicare un errore. Per altri codici di errore, vedere Costanti di errore WMI o WbemErrorEnum. Per i valori HRESULT generali, vedere Codici di errore di sistema.

0

Completamento.

2

L'utente non ha accesso alle informazioni richieste.

8

Errore sconosciuto.

9

L'utente non dispone di privilegi adeguati per eseguire il metodo .

21

Un parametro specificato nella chiamata al metodo non è valido.

Osservazioni:

L'istanza di Win32_SecurityDescriptor rappresenta un tipo di dati edizione StandardCURITY_DESCRIPTOR_CONTROL e contiene un elenco di controllo di accesso discrezionale (DACL) e un elenco di controllo di accesso di sistema (SACL). Per altre informazioni, vedere Controllo di accesso Elenchi.

Se l'oggetto SeSecurityPrivilege non viene concesso o abilitato quando si ottiene un descrittore di sicurezza, nel descrittore di sicurezza restituito viene restituito solo l'elenco DACL. Per altre informazioni, vedere Costanti dei privilegi ed esecuzione di operazioni con privilegi.

È possibile aggiornare sia il DACL che il SACL nell'istanza di Win32_SecurityDescriptor quando si chiama questo metodo, ma è anche possibile aggiornare solo l'elenco DACL o solo l'elenco SACL.

I valori seguenti in edizione StandardCURITY_DESCRIPTOR_CONTROL determinare se l'elenco DACL, l'elenco SACL o entrambi vengono aggiornati.

  • edizione Standard_DACL_PREedizione Standard NT

    Indica che l'elenco DACL deve essere aggiornato. Se questa impostazione non è impostata, WMI mantiene il valore originale dell'elenco DACL.

  • edizione Standard_SACL_PREedizione Standard NT

    Indica che l'elenco SACL deve essere aggiornato. Se non è impostato, WMI mantiene il valore originale dell'elenco SACL. Per aggiornare sacl, l'account deve avere il privilegio SeSecurityPrivilege abilitato. Per lo scripting, il nome del privilegio è SeSecurityPrivilege. Per altre informazioni, vedere Costanti dei privilegi.

Se il trustee del gruppo e le proprietà del trustee proprietario non sono NULL, vengono aggiornate. In caso contrario, WMI mantiene i valori originali. Per altre informazioni, vedere Oggetti descrittori di sicurezza WMI.

Quando un nuovo SACL è NULL in una chiamata a questo metodo, il descrittore di sicurezza SACL nell'oggetto a protezione diretta di destinazione rimane invariato.

Esempi

Nell'esempio di codice di PowerShell seguente viene descritto come impostare il descrittore di sicurezza per una stampante.

# 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)

Requisiti

Requisito Valore
Client minimo supportato
Windows Vista
Server minimo supportato
Windows Server 2008
Spazio dei nomi
Root\CIMV2
MOF
Win32_Printer.mof
DLL
CIMWin32.dll

Vedi anche

Win32_Printer

Costanti privilegio

Oggetti descrittore di sicurezza WMI

Modifica della sicurezza di accesso per oggetti a protezione diretta