Metodo GetSecurityDescriptor della classe Win32_Printer
Il metodo GetSecurityDescriptor restituisce il descrittore di sicurezza che controlla l'accesso alla stampante. Il descrittore viene restituito come istanza di Win32_SecurityDescriptor. Per altre informazioni, vedere Modifica della sicurezza di accesso in oggetti a protezione diretta.
Questo argomento usa la sintassi MOF (Managed Object Format). Per altre informazioni sull'uso di questo metodo, vedere Chiamata di un metodo.
Sintassi
uint32 GetSecurityDescriptor(
[out] Win32_SecurityDescriptor Descriptor
);
Parametri
-
Descrittore [out]
-
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.
Commenti
L'istanza di Win32_SecurityDescriptor rappresenta un tipo di dati SECURITY_DESCRIPTOR_CONTROL e contiene un elenco di controllo di accesso discrezionale (DACL) e un elenco di controllo degli accessi di sistema (SACL). Per altre informazioni, vedere elenchi di Controllo di accesso.
Se SeSecurityPrivilege non viene concesso o abilitato quando si ottiene un descrittore di sicurezza, viene restituito solo il descrittore di sicurezza restituito nel descrittore di sicurezza restituito. Per altre informazioni, vedere Costanti dei privilegi ed esecuzione di operazioni con privilegi.
Esempio
Nell'esempio di codice VBScript seguente sono elencate le stampanti collegate al computer locale e ottiene il descrittore di sicurezza per ogni stampante. Le voci di controllo di accesso (ACE) nell'elenco di controllo di accesso discrezionale (DACL) vengono quindi estratte per determinare quali utenti hanno accesso alla stampante.
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
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato |
Windows Vista |
Server minimo supportato |
Windows Server 2008 |
Spazio dei nomi |
Radice\CIMV2 |
MOF |
|
DLL |
|