解释VBScript WMI query/impersonationLevel等

use*_*319 7 vbscript wmi wmi-query

Dim strComputer, objReg, ScriptName, strKeyPath, strValueName, strValue
Const HKEY_LOCAL_MACHINE = &H80000002
strComputer = "."

Set objReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _
    strComputer & "\root\default:StdRegProv")
Run Code Online (Sandbox Code Playgroud)

这是一个较大的脚本,我正在尝试对工作进行逆向工程.原始编码器不可用.

我试图研究和理解最后一行代码,但我在网上找不到任何好的信息,而且我对vbs并不擅长.

据我所知: - objreg是一个SWbemObjectEx类型的对象. - winmgmts:{impersonationLevel = impersonate}让对象使用调用者的安全级别(在我的案例系统中) - StdRegProv应该指向HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WBEM\Scripting\Default Impersonation Level

我有点得到它应该做的但是我不知道它是如何玩的.

如果任何人都可以逐字逐句地解释它的作用,包括"!\"之类的东西,我会非常感激它.谢谢.

ror*_*.ap 14

首先,通过设置strComputer等于period(.),这意味着它的目标是本地计算机,而不是远程计算机,因为该期间是本地计算机的MS Windows速记.

GetObject()方法是Windows Scripting Host函数,可用于获取多种类型的对象,具体取决于您提供的第一个参数(请参阅http://msdn.microsoft.com/en-us/library/8ywk619w%28v= vs.84%29.aspx了解更多信息).在这种情况下,您使用它连接到Windows的内置Windows Management Instrumentation(WMI)数据源(请参阅http://msdn.microsoft.com/en-us/library/aa394582%28v=vs.85有关WMI名称的更多信息,winmgmts:请参阅http://technet.microsoft.com/en-us/library/bb684728.aspx以获取有关连接到WMI对象的更多信息.%29.aspx.

在使用此过程的任何WMI连接中,WMI名字对象允许三个组件:

  • 前缀"winmgmts:"(必填)
  • 安全设置组件(可选)
  • WMI对象路径组件(可选)

在您的示例中,提供了"安全设置组件":{impersonationLevel=impersonate}!以及"WMI对象路径组件":\\.\root\default:StdRegProv.

正如您正确指出的那样,安全组件用于设置将提供给查询的权限.

路径组件用于引用WMI"对象或类路径",即WMI提供的信息集的特定信息段的路径.它不应该与文件系统中的路径混淆.路径组件始终以\\<computer name>\,其中<computer name>是远程计算机或上面提到的指示本地计算机的时间段.

在您的情况下,路径指向StdRegProv该类(有关详细信息,请参阅http://msdn.microsoft.com/en-us/library/aa393664%28v=vs.85%29.aspx); 此类只提供对Windows注册表的访问以进行读写.

一旦你的对象通过

Set objReg=GetObject("winmgmts:impersonationLevel=impersonate}!\\" & _
    strComputer & "\root\default:StdRegProv")
Run Code Online (Sandbox Code Playgroud)

您可以使用它objReg来执行任何可用的操作(有关详细信息,请参阅http://msdn.microsoft.com/en-us/library/aa393664%28v=vs.85%29.aspx).