Выполнение привилегированных операций
Для привилегированных операций требуются права безопасности, такие как 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
Связанные разделы