几天前,我第一次注意到我的一个 VBscript 在启动几秒钟后就自动停止了。原来,wscript.exe 进程在创建后约 5 秒就被终止了。这非常准确。我编写了一个测试脚本,其中包含:
wscript.sleep 4800
wscript.echo "hi"
我在 TaskManager 中看到了 wscript.exe 进程,等待 4.8 秒后,我会看到一瞬间的消息框,然后它(和进程)就消失了。将时间更改为 5200,我再也看不到消息框了。
奇怪的是:将时间设置为 5000,该进程大多数时候也会被终止,但我亲眼目睹过 3 次它没有被终止。直到我单击“确定”后,该进程才会消失。
wscript.exe 和 cscript.exe 的行为相同
从资源管理器中双击 vbs,或从管理员启动的 cmd.exe 运行 vbs 没有任何区别
我正在使用 Security Essentials(并且已经使用很长时间了)
HijackThis 显示此行(并非一直都在那里):O4 - HKLM..\RunOnce: [Malwarebytes Anti-Malware] C:\Program Files (x86)\Malwarebytes' Anti-Malware\mbamgui.exe /install /silent(尽管 mbamgui.exe 不是一个正在运行的进程)
使用 cscript 运行时输出为:
d:\temp>cscript tst.vbs
Microsoft (R) Windows Script Host 版本 5.8
版权所有 (C) Microsoft Corporation。保留所有权利。hi
脚本“d:\temp\tst.vbs”的执行时间已超出。
脚本执行已终止。
下面的代码也只有计算时间保持在 5 秒以下时才会显示结果:
t1=Timer
对于 i=1 到 25000000
x = Rnd()*Rnd()
下一个
MsgBox timer-t1
在我的计算机上,当数值为 25000000 时,我可以瞬间看到结果,但当数值为 30000000 时,结果却永远不会显示。
有什么方法可以查明哪个进程导致终止我的 VBscript 进程?
答案1
超时默认值为无,因此也许你不小心配置了脚本引擎超时。
如果这不是问题,那么您可以尝试使用以下方法监视脚本进程(WScript 或 CScript)Sysinternals ProcMon。