Ausführen privilegierter Vorgänge
Privilegierte Vorgänge erfordern Sicherheitsberechtigungen wie SeLoadDriverPrivilege (wbemPrivilegeLoadDriver in den Skripterstellungs-API-Konstanten), eine Berechtigung, die für ein Konto aktiviert werden muss, das einen Gerätetreiber lädt. Sie können einem Administrator oder Benutzer über WMI keine Berechtigungen hinzufügen. Sie können nur Berechtigungen aktivieren, über die das Konto bereits verfügt. Eine Liste der Berechtigungen finden Sie unter _ Berechtigungskonstanten.
Standardmäßig kann ein lokaler Benutzer auf einem Computer statische Daten aus dem WMI-Repositorylesen, in von Anbietern bereitgestellte Instanzen schreiben und Anbietermethoden ausführen, es sei denn, der Anbieter erzwingt eigene spezielle Sicherheitsanforderungen. Nur Administratoren können eine Verbindung mit einem Remotecomputer herstellen,Sicherheitsbeschreibungen ändern oder statische WMI-Repositorydaten ändern, z. B. eine WMI-Klassendefinition. Alle Berechtigungen sind für eine Remoteverbindung aktiviert. Weitere Informationen finden Sie unter Sichern einer WMI-Remoteverbindung.
Die Berechtigungskonstanten für C++ unterscheiden sich von denen, die von Automatisierungssprachen wie Visual Basic verwendet werden. Skripts müssen den Wert der Konstante anstelle des Namens verwenden. Weitere Informationen finden Sie unter Ausführen privilegierter Vorgänge mit C++ oder Ausführen privilegierter Vorgänge mit VBScript.
Eine häufige Ursache für Zugriffsverweigerungsfehler bei der Verwendung von WMI ist das Fehlen einer aktivierten Berechtigung für Vorgänge, z. B. das Abrufen aller Instanzen von Win32 _ NTEventlogFile. Ohne aktivierung der SeSecurity-Berechtigung können Sie nicht auf die Sicherheitsprotokolldatei zugreifen.
Das folgende VBScript-Codebeispiel zeigt, wie sie die SeSecurity-Berechtigung in der Monikerzeichenfolge festlegen. Bei Verwendung im Moniker löscht der Berechtigungsname in Klammern den anfänglichen "Se". Weitere Informationen finden Sie unter Erstellen einer Monikerzeichenfolge.
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