Поделиться через


Выполнение привилегированных операций

Для привилегированных операций требуются права безопасности, такие как SeLoadDriverPrivilege (wbemPrivilegeLoadDriver в константах API скрипт ов), привилегии, которые необходимо включить для учетной записи, загружающей драйвер устройства. Невозможно добавить права администратора или пользователя через WMI, вы можете включить только те привилегии, которые у учетной записи уже есть. Список привилегий см. в Privilege_Constants.

По умолчанию локальный пользователь на компьютере может считывать статические данные из репозитория WMI, записывать в экземпляры, предоставляемые поставщиками, и выполнять методы поставщика, если поставщик не применяет особые требования к безопасности. Только администраторы могут подключаться к удаленному компьютеру, изменять дескрипторы безопасности или изменять статические данные репозитория WMI, например определение класса WMI. Все привилегии включены для удаленного подключения. Дополнительные сведения см. в статье Защита удаленного подключения WMI.

Константы привилегий для C++ отличаются от тех, которые используются языками автоматизации, такими как Visual Basic. Скрипты должны использовать значение константы, а не имя. Дополнительные сведения см. в статье Выполнение привилегированных операций с помощью C++ или выполнение привилегированных операций с помощьюVBScript.

Распространенные причины ошибок отказа в доступе при использовании WMI — это отсутствие включенной привилегии для операций, таких как получение всех экземпляров Win32_NTEventlogFile. Без включения привилегий SeSecurity невозможно получить доступ к файлу журнала безопасности.

В следующем примере кода VBScript показано, как задать привилегии SeSecurity в строке моникера. При использовании в моникере имя привилегии в скобках удаляет начальное "Se". Дополнительные сведения см. статью Конструирование строки 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

константы привилегий