执行特权操作

特权操作需要安全特权,如脚本 API 常量) 中的 seLoadDriverPrivilege (wbemPrivilegeLoadDriver,这是为加载设备驱动程序的帐户启用的特权。 不能通过 WMI 向管理员或用户添加权限,只能启用帐户已拥有的权限。 有关权限列表,请参阅 Privilege_Constants

默认情况下,计算机上的本地用户可以从 WMI 存储库读取静态数据、写入提供程序提供的实例和执行提供程序方法,除非提供程序强制执行其自身的特殊安全要求。 只有管理员可以 连接到远程计算机、更改安全描述符或更改静态 WMI 存储库数据,例如 WMI 类定义。 所有特权都为远程连接启用。 有关详细信息,请参阅 保护远程 WMI 连接

C++ 的特权常量不同于自动化语言(如Visual Basic)使用的权限常量。 脚本必须使用常量的值,而不是名称。 有关详细信息,请参阅 使用 C++ 执行特权操作 或使用 VBScript 执行特权操作

使用 WMI 时访问被拒绝错误的常见原因是缺少启用的操作特权,例如获取 所有Win32_NTEventlogFile实例。 如果不启用 SeSecurity 特权,则无法访问安全日志文件。

以下 VBScript 代码示例演示如何在名字对象字符串中设置 SeSecurity 特权。 在名字对象中使用时,括号中的特权名称将删除初始“Se”。 有关详细信息,请参阅 构造名字对象字符串

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

特权常量