使用WMI VB腳本,我想創建/附加多個子進程到父進程,如資源管理器進程。我可以使用WMI VB腳本創建子進程嗎?
當一個應用程序可以通過點擊它開始,它成爲Explorer進程的子進程。 Windows啓動時加載的所有應用程序也是如此。
如果您在任務管理器中使用「結束進程樹」上下文菜單選項終止資源管理器進程,它也會終止資源管理器進程的所有子進程(一種快速,蠻力的方式來清理內存而無需重新啓動) 。
我有兩個腳本 - 一個殺死了一堆的具體流程,另一個重新啓動這些進程。
大部分進程的/在我的腳本應用程序在啓動時因此它們explorer進程的孩子被加載。如前所述,當我終止瀏覽器進程樹時,所有這些進程都會死亡。
當我使用腳本重新啓動這些應用程序時,它們不再是資源管理器進程的子項。當我殺死瀏覽器進程樹時,腳本啓動的應用程序不會死亡。
現在,我知道我可以使用腳本分別殺死每個進程。但是,只需要在腳本中終止瀏覽器進程樹,而不必指定要殺死的單個應用程序即可。
所以,如果我有一個腳本,該腳本可以開始我的應用程序作爲資源管理過程中的孩子,我的其他腳本只是要殺死Explorer進程樹。
我有一個腳本可以做到這一點。它循環並殺死探測器進程的所有子進程。但它只適用於啓動時加載或點擊的應用程序。
此外,通過阻止這些應用程序在啓動時加載,Windows加載速度更快。稍後,我點擊我的腳本圖標以在需要時加載我的應用程序。
這就是爲什麼我想創建一個腳本,可以啓動應用程序作爲資源管理器進程的子項。
一個有趣的邊注:我不得不推遲殺死任何命令/控制檯程序,否則腳本可能獲取過程的其餘部分之前殺死自己。
任何想法如何做到這一點?
下面是我的代碼失敗。
Option Explicit
dim wmi, rootProcessName, rootProcess, objStartup, objConfig, objProcess, strComputer, dropbox, itunes, skype
strComputer = "."
dropbox="C:\Program Files\Dropbox\Dropbox.exe"
itunes="C:\Program Files\iTunes\iTunes.exe"
skype="C:\Program Files\Skype\Phone\Skype.exe"
Const NORMAL = 32
Set wmi = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set objStartup = wmi.Get("Win32_ProcessStartup")
Set objConfig = objStartup.SpawnInstance_
objConfig.PriorityClass = NORMAL
rootProcessName = "'explorer.exe'"
set rootProcess = wmi.ExecQuery("Select * from Win32_Process Where Name = " & rootProcessName)
For Each objProcess in rootProcess
objProcess.Create dropbox, null, objConfig
objProcess.Create itunes, null, objConfig
objProcess.Create skype, null, objConfig
Next
WScript.Quit
它是如何失敗?有錯誤訊息? – ssorrrell 2009-07-30 14:29:50