解释VBScript WMI query / impersonationLevel等

时间:2014-04-09 12:59:56

标签: 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")

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

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

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

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

如果有人能够逐字逐句地解释它的作用,包括“!\”之类的东西, 我会非常感激它。谢谢。

1 个答案:

答案 0 :(得分:12)

首先,通过将strComputer设置为等于句点(.),这意味着它定位到本地计算机,而不是远程计算机,因为该句点是MS Windows的缩写本地电脑。

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

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

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

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

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

路径组件用于引用WMI&#34;对象或类路径&#34;,即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")

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