我正在使用这段代码:
Dim name
name = CreateObject("WScript.Shell").ExpandEnvironmentStrings("%computername%")
Set wmi = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" _
& name & "\root\cimv2")
For Each hwnd In wmi.InstancesOf("Win32_Process")
If hwnd.Name = "wscript.exe" Then
'get name and possibly location of currently running script
End If
Next
我成功地列出了所有进程并选择了wscript.exe
. 但是,我已经搜索并没有找到在 中运行的脚本的名称wscript.exe
,即。是它myscript.vbs
还是jscript.js
什么。如果有办法找到脚本的整个路径,则可以加分。
编辑:
通过更多搜索,我找到了解决方案。在上面的脚本中,hwnd
变量存储了wscript.exe
进程的句柄。句柄有一个属性:hwnd.CommandLine
。它显示了如何从命令行调用它,所以它会是这样的:
"C:\Windows\System32\wscript.exe" "C:\path\to\script.vbs"
所以我可以解析hwnd.CommandLine
字符串以找到所有正在运行的脚本的路径和名称。