我的vbscript文件中有一个字符串.我想将字符串作为代码执行.例如,字符串可以是'msgbox("hello")'.但是,eval函数只接受数字或字符串操作.我该如何执行代码?我总是可以创建一个新文件并将该字符串写入文件,执行该文件并删除它,但我正在寻找一种更好的方法来执行此操作.
我试图ActiveXObject()在C#中使用JScript.NET中新发现的功能.我怎样才能做到这一点?
并且不要说用COM对象可以做的任何事情都可以在C#中完成.如果我想这样做,我已经有了.
我正在使用此代码:
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
Run Code Online (Sandbox Code Playgroud)
我成功列出了所有流程并选择了wscript.exe.但是,我搜索过,发现没有办法找到运行的脚本的名称wscript.exe,即.是myscript.vbs或jscript.js什么的.如果有办法找到脚本的整个路径,可以获得奖励.
编辑:
通过更多搜索,我找到了解决方案.在上面的脚本中,hwnd变量存储wscript.exe进程的句柄.手柄有一个属性:hwnd.CommandLine.它显示了如何从命令行调用它,所以它将是这样的:
"C:\Windows\System32\wscript.exe" "C:\path\to\script.vbs"
Run Code Online (Sandbox Code Playgroud)
所以我可以解析hwnd.CommandLine字符串来查找所有正在运行的脚本的路径和名称.