当前位置: 首页 > 图文教程 > 脚本技术 > VBScript > 用vbs实现重新启动 Internet Explorer

VBScript
Dynamic Activity Window动态活动窗口vbs
可以查询系统用户名sid的vbs
VBScript使用ADSI为IIS批量添加屏蔽或允许访问的IP
WMI IE代理 切换或改变(Use WMI Change IE Proxy)
SendKeys clip.exe 发送中文的代码
利用计划任务和VBS脚本实现自动WEB共享文件夹里的文件
XorEncode的vbs实现代码
利用wsc制作的一个asp后门
ie7 0day当中的shellcode的escape+xor21加密
VBScript 作用 简单说明
IE浏览器增加“复制图像地址”的右键菜单的vbs代码
vbscript LoadPicture函数使用方法与漏洞利用
可自删除 开启3389创建用户粘滞键后门的vbs
CMD和vbs修改 IP地址及DNS的实现代码
vbScript on error resume next容错使用心得
vbscript include的办法实现代码
vbscript 读取xml格式的配置文件
vbScript中WScript.Shell对象的run和exec使用心得分享
VBS 路由重启脚本
vbscript logparser的ISA2004 Web流量报告

VBScript 中的 用vbs实现重新启动 Internet Explorer


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-11   浏览: 244 ::
收藏到网摘: n/a

问:
您好,脚本专家!如果未运行其他实例,如何重新启动 Internet Explorer?
-- MT
答:
您好,MT。多谢您的问题。您知道,如今每个人都在挑剔可怜的 Internet Explorer 的毛病(尽管大多数 Windows 用户仍在使用 Internet Explorer)。但现在有人提出了一个问题,他想确保 Internet Explorer 始终正常运行。看见了吧,Internet Explorer:还有人喜欢你!
尽管我们本来要为 Internet Explorer 而感到高兴的,但我们不得不承认这个问题使我们有些为难。毕竟,可通过多种不同的方法来解决此问题,这取决于您是需要立即重新启动 Internet Explorer 还是要等一会再启动它。对此问题沉思片刻之后,我们决定按我们通常所采取的办法去做:采用最简单的解决办法,在本示例中,每 60 秒检查一次是否有任何 Internet Explorer 实例正在运行。如果有,则脚本只返回到休眠状态,再等待 60 秒,然后重新检查。如果没有任何运行的 Internet Explorer 实例,则脚本将启动 Internet Explorer 的新副本,然后休眠片刻,再等待 60 秒,之后重新检查。
是的,这有点类似于脚本专家一天的工作。嗯,您知道我们是什么意思吗?不同之处就是每 60 秒即醒来一次以便干点什么。
以下是我们所提供的脚本:
复制代码 代码如下:

strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set objShell = CreateObject("Wscript.Shell")
Do While True
Set colProcesses = objWMIService.ExecQuery _
("Select * from Win32_Process Where Name = 'iexplore.exe'")
If colProcesses.Count = 0 Then
objShell.Run "iexplore.exe"
End If
Wscript.Sleep 60000
Loop

没错:它实质上只是个普通的 WMI 脚本。因此,它首先连接到本地计算机上的 WMI 服务。但是该脚本与其他 WMI 脚本之间存在一个主要的不同之处。通常此时我们会说:“不过,您也可以针对远程计算机运行此脚本”。遗憾的是,这一次并非如此。从技术上讲,您可以针对远程计算机运行该脚本,但您启动的任何 Internet Explorer 实例都将在不可见的窗口中运行(至少在 Windows XP 和 Windows Server 2003 上是这样),因此,您将无法在屏幕上看到它。这是操作系统中内置的一种安全功能:远程启动的进程始终在隐藏窗口中运行。也就是说,该脚本必须在本地计算机上运行。
注意:这个问题有解决办法吗?事实上有解决办法,尽管它要求您本地而不是远程启动进程。有关如何解决该问题的示例,请参阅您好,脚本专家!专栏。
连接到 WMI 服务后,我们就创建一个 WScript.Shell 对象的实例,我们将使用它来生成所有新的 Internet Explorer 实例。(是的,我们本来可以使用 WMI 来实现此目的的,但大多数人都发现使用 Wscript.Shell 运行程序要比使用 WMI 更容易。)接着我们建立一个只要 True 等于 True 时即运行的 Do 循环。(除非哲学上有任何新的进展,否则这就意味着脚本将永远运行下去。要停止该脚本,需要终止脚本进程。如果您正运行在 CScrip 下的命令窗口中,只需按 Ctrl+C 或关闭命令窗口即可实现此操作,非常容易。)
那么此循环执行什么操作?首先,我们使用以下代码来检索当前在计算机上运行的所有名为 iexplore.exe 的进程集合:
Set colProcesses = objWMIService.ExecQuery _
("Select * from Win32_Process Where Name = 'iexplore.exe'")
尽管会失去悬念,但还是要与当前在计算机上运行的所有 Internet Explorer 实例的集合保持一致。然后,我们检查 Count 属性(该属性可告诉我们集合中的项数)的值是否等于 0:
If colProcesses.Count = 0 Then
如果 Count 等于 0,则表示计算机上未运行任何 Internet Explorer 实例。因此,我们使用 Shell 对象和 Run 方法来启动一个全新的实例:
objShell.Run "iexplore.exe"
就是这样。接下来,使用 Sleep 方法将脚本暂停 60 秒(60,000 毫秒)。60 秒之后,脚本继续执行,再次循环并重复该过程,直至永远。如果所需时间间隔不是 60 秒,调整该值即可。例如,下面这行代码将每 30 秒(30,000 毫秒)进行一次检查:
Wscript.Sleep 30000
下面的代码将每 10 分钟(60,000 毫秒/每分钟乘以 10 分钟)运行一次检查:
Wscript.Sleep 600000
不可否认,该代码仅每 10 分钟检查一次 Internet Explorer 是否在工作。对于脚本专家来说,就没有必要再每 10 分钟检查一次他们是否在工作:毕竟,有没有脚本,您都知道该问题的答案。