Ausführen von privilegierten Vorgängen

Privilegierte Vorgänge erfordern Sicherheitsberechtigungen wie SeLoadDriverPrivilege (wbemPrivilegeLoadDriver in den Skript-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 keine Berechtigungen über WMI hinzufügen, Sie können nur Berechtigungen aktivieren, die das Konto bereits besitzt. Eine Liste der Berechtigungen finden Sie unter Berechtigungskonstanten.

Standardmäßig kann ein lokaler Benutzer auf einem Computer statische Daten aus dem WMI-Repository lesen, in von Anbietern bereitgestellte Instanzen schreiben und Anbietermethoden ausführen, es sei denn, der Anbieter setzt eigene spezielle Sicherheitsanforderungen durch. 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 Schützen einer WMI-Remoteverbindung.

Die Berechtigungskonstanten für C++ unterscheiden sich von denen, die von Automatisierungssprachen wie Visual Basic verwendet werden. In Skripts muss der Wert der Konstanten anstelle des Namens verwendet werden. Weitere Informationen finden Sie unter Ausführen von privilegierten Vorgängen mit C++ oder Ausführen von privilegierten Vorgängen mit VBScript.

Eine häufige Ursache für verweigerten Zugriff bei der Verwendung von WMI ist das Fehlen einer aktivierten Berechtigung für Vorgänge, z. B. beim 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 die SeSecurity-Berechtigung in der Monikerzeichenfolge festgelegt wird. Bei Verwendung im Moniker wird mit dem Berechtigungsnamen in Klammern das anfängliche „Se“ gelöscht. 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

Berechtigungskonstanten