Esecuzione di operazioni con privilegi
Le operazioni con privilegi richiedono privilegi di sicurezza, ad esempio SeLoadDriverPrivilege (wbemPrivilegeLoadDriver nelle costanti API di scripting), un privilegio che deve essere abilitato per un account che sta caricando un driver di dispositivo. Non è possibile aggiungere privilegi a un amministratore o a un utente tramite WMI, è possibile abilitare solo i privilegi già presenti nell'account. Per un elenco di privilegi, vedere Privilege_Constants.
Per impostazione predefinita, un utente locale in un computer può leggere dati statici dal repository WMI, scrivere nelle istanze fornite dai provider ed eseguire metodi provider, a meno che il provider non applichi requisiti di sicurezza speciali di propria proprietà. Solo gli amministratori possono connettersi a un computer remoto, modificare i descrittori di sicurezza o modificare i dati del repository WMI statici, ad esempio una definizione di classe WMI. Tutti i privilegi sono abilitati per una connessione remota. Per altre informazioni, vedere Protezione di una connessione WMI remota.
Le costanti dei privilegi per C++ differiscono da quelle usate dai linguaggi di automazione, ad esempio Visual Basic. Gli script devono usare il valore della costante anziché il nome. Per altre informazioni, vedere Esecuzione di operazioni con privilegi con C++ o esecuzione di operazioni con privilegitramite VBScript.
Una causa comune di errori di accesso negato quando si usa WMI è la mancanza di un privilegio abilitato per le operazioni, ad esempio ottenere tutte le istanze di Win32_NTEventlogFile. Senza abilitare il privilegio SeSecurity , non è possibile accedere al file di log di sicurezza.
Nell'esempio di codice VBScript seguente viene illustrato come impostare il privilegio SeSecurity nella stringa moniker. Se usato nel moniker, il nome dei privilegi nelle parentesi elimina l'iniziale "Se". Per altre informazioni, vedere Costruzione di una stringa moniker.
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate,(Security)}!\\" _
& strComputer & "\root\cimv2")
Set colFiles = objWMIService.ExecQuery _
("Select * from Win32_NTEventLogFile " _
& "Where LogFileName='Security'")
For Each LogFile in colFiles
Wscript.Echo LogFile.NumberOfRecords
Next
Argomenti correlati