問(wèn): 您好,腳本專家!如果未運(yùn)行其他實(shí)例,如何重新啟動(dòng) Internet Explorer? -- MT 答: 您好,MT。多謝您的問(wèn)題。您知道,如今每個(gè)人都在挑剔可憐的 Internet Explorer 的毛病(盡管大多數(shù) Windows 用戶仍在使用 Internet Explorer)。但現(xiàn)在有人提出了一個(gè)問(wèn)題,他想確保 Internet Explorer 始終正常運(yùn)行。看見(jiàn)了吧,Internet Explorer:還有人喜歡你! 盡管我們本來(lái)要為 Internet Explorer 而感到高興的,但我們不得不承認(rèn)這個(gè)問(wèn)題使我們有些為難。畢竟,可通過(guò)多種不同的方法來(lái)解決此問(wèn)題,這取決于您是需要立即重新啟動(dòng) Internet Explorer 還是要等一會(huì)再啟動(dòng)它。對(duì)此問(wèn)題沉思片刻之后,我們決定按我們通常所采取的辦法去做:采用最簡(jiǎn)單的解決辦法,在本示例中,每 60 秒檢查一次是否有任何 Internet Explorer 實(shí)例正在運(yùn)行。如果有,則腳本只返回到休眠狀態(tài),再等待 60 秒,然后重新檢查。如果沒(méi)有任何運(yùn)行的 Internet Explorer 實(shí)例,則腳本將啟動(dòng) Internet Explorer 的新副本,然后休眠片刻,再等待 60 秒,之后重新檢查。 是的,這有點(diǎn)類似于腳本專家一天的工作。嗯,您知道我們是什么意思嗎?不同之處就是每 60 秒即醒來(lái)一次以便干點(diǎn)什么。 以下是我們所提供的腳本:
復(fù)制代碼 代碼如下:
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
沒(méi)錯(cuò):它實(shí)質(zhì)上只是個(gè)普通的 WMI 腳本。因此,它首先連接到本地計(jì)算機(jī)上的 WMI 服務(wù)。但是該腳本與其他 WMI 腳本之間存在一個(gè)主要的不同之處。通常此時(shí)我們會(huì)說(shuō):“不過(guò),您也可以針對(duì)遠(yuǎn)程計(jì)算機(jī)運(yùn)行此腳本”。遺憾的是,這一次并非如此。從技術(shù)上講,您可以針對(duì)遠(yuǎn)程計(jì)算機(jī)運(yùn)行該腳本,但您啟動(dòng)的任何 Internet Explorer 實(shí)例都將在不可見(jiàn)的窗口中運(yùn)行(至少在 Windows XP 和 Windows Server 2003 上是這樣),因此,您將無(wú)法在屏幕上看到它。這是操作系統(tǒng)中內(nèi)置的一種安全功能:遠(yuǎn)程啟動(dòng)的進(jìn)程始終在隱藏窗口中運(yùn)行。也就是說(shuō),該腳本必須在本地計(jì)算機(jī)上運(yùn)行。