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
Win32_Printer.mof
DLL
CIMWin32.dll

Vedi anche

Win32_Printer

Costanti dei privilegi

Oggetti descrittori di sicurezza WMI

Modifica della sicurezza di accesso in oggetti a protezione diretta