分享

如何知道哪些脚本正在计算机上运行?

 星爷 2006-04-28

如何知道哪些脚本正在计算机上运行?

问:

嗨,Scripting Guy!如何知道哪些脚本正在计算机上运行?

-- NW

答:

嗨,NW。这个问题我们通常不大愿意回答,因为有 50% 的概率您可能对所听到的解答感到不满意。如果运行的是 Windows 2000(或 Windows 的以前版本),那么答案很简单:办不到。诸如下方的脚本——可查找在 Cscript.exe 或 Wscript.exe 下运行的所有进程——可以告诉您有脚本正在计算机上运行:

strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery _
("Select * from Win32_Process Where Name = ‘cscript.exe‘" & _
" OR Name = ‘wscript.exe‘")
For Each objItem in colItems
Wscript.Echo objItem.Name
Next

但是,该脚本无法告诉您相关脚本的名称。实际上,据我们所知,操作系统中内置的程序无法识别在 Windows 2000 计算机上运行的各个脚本;即便任务管理器也只能进程名称(Cscript.exe 和 Wscript.exe)。

但是,如果运行的是 Windows XP 或 Windows Server 2003,那么我们就可以为您提供不同——更好的——的解答。Windows XP 对 Win32_Process 类别添加了一个新的属性——CommandLine。正如其名,CommandLine 可告诉您用以启动进程的确切命令。例如,假设您在命令提示符中通过键入 cscript my_script.vbs 来启动一个脚本。该脚本的 CommandLine 属性将为:

cscript my_script.vbs

换句话说,现在您已经知道名为 My_Script.vbs 的脚本正在计算机上运行。

但是如果不使用命令提示符来启动脚本又如何?如果在 Windows 资源管理器中双击文件图标并在 Wscript 下运行该脚本又会怎么样?没有问题。假如双击文件 C:\Scripts\My_Script.vbs;将得到如下的 CommandLine 值:

C:\WINDOWS\System32\WScript.exe "C:\Scripts\My_Script.vbs"

正如您所看到,我们得到了 Wscript 可执行文件的路径以及正在运行的脚本的路径。现在差不多了吧?

无论如何,如果运行的是 Windows XP 或 Windows Server 2003,那么这里有一个脚本可以帮您实现这一技巧:

strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery _
("Select * from Win32_Process Where Name = ‘cscript.exe‘" & _
" OR Name = ‘wscript.exe‘")
For Each objItem in colItems
Wscript.Echo objItem.CommandLine
Next

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多