【问题标题】:Explain VBScript WMI query / impersonationLevel, etc解释VBScript WMI查询/impersonationLevel等
【发布时间】:2014-04-09 12:59:55
【问题描述】:
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

我有点明白它应该做什么,但我不明白它是怎么玩的。

如果有人可以逐字逐句解释它的作用,包括“!\”之类的东西, 我将不胜感激。谢谢。

【问题讨论】:

    标签: vbscript wmi wmi-query


    【解决方案1】:

    首先,通过将strComputer 设置为句点 (.),这意味着它针对的是本地计算机,而不是远程计算机,因为句点是本地计算机的 MS Windows 简写。

    GetObject() 方法是一个 Windows 脚本宿主函数,可用于获取多种类型的对象,具体取决于您作为第一个参数提供的内容(有关详细信息,请参阅 http://msdn.microsoft.com/en-us/library/8ywk619w%28v=vs.84%29.aspx)。在这种情况下,您使用 WMI 名字对象 winmgmts: 连接到 Windows 的内置 Windows Management Instrumentation (WMI) 数据源(有关 WMI 的更多信息,请参阅 http://msdn.microsoft.com/en-us/library/aa394582%28v=vs.85%29.aspx) (有关连接到 WMI 对象的更多信息,请参阅 http://technet.microsoft.com/en-us/library/bb684728.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")
    

    您可以使用objReg 来执行任何可用的操作(同样, 请参阅http://msdn.microsoft.com/en-us/library/aa393664%28v=vs.85%29.aspx 了解更多信息)。

    【讨论】:

    • 感谢您的出色回答。现在说得通了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-28
    • 1970-01-01
    • 1970-01-01
    • 2019-10-25
    • 2013-12-20
    相关资源
    最近更新 更多