
Cikkünkhöz mellékeltük az alábbiakban tárgyalásra kerülő szkriptet "HiddenProcess.vbs" néven. Futtatásával háttérfolyamatként indítjuk a NOTEPAD.EXE alkalmazást, melynek bezárása CTRL+ALT+DEL hatására megjelenő ablak "Folyamatok" ("Processes") oldalán lehetséges.
A folyamatlistát legegyszerűbben a CTRL+ALT+DEL billentyűkombinációval érhetjük el, ha a megjelenő ablak "Folyamatok" ("Processes") oldalára lépünk. Itt továbbra is látszanak az ablakkal nem rendelkező programok. Látszik mennyi erőforrást használnak fel és leállíthatók. A leállítás egyébként még külön programból lehetséges, lévén, hogy nincs a felhasználói felület felé megjelenésük, nincs hová kattintani. Esetleg magába a programba építhető időzítés, mely a megfelelő feltételek elkövetkeztekor automatikusa kilépteti, de ez nyilván nem valósítható meg minden alkalmazásnál.
Példánkban a NOTEPAD.EXE (Jegyzettömb) programot futtatjuk a háttérben. Tényleg csak a példa kedvéért, hiszen egy szövegszerkesztő programnál egyébként nem sok értelme lenne.
Elsőként létrehozunk egy változót és eltároljuk benne annak a számítógépnek a nevét, amelyiken a NOTEPAD-et indítjuk. A pont (.) a helyi gépet jelenti.
Létrehozunk egy konstanst "HIDDEN_WINDOW" néven és 12-t adunk neki értéknek (lásd lent).
Kapcsolatot teremtünk a WMI (Windows Management Instrumentation) szolgáltatás \root\cimv2 névterével az előző változóban megadott gépen. Ezen névtér tárolja az alábbiakban meghívásra kerülő osztályokat.
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & Computer & "\root\cimv2")
Mindjárt itt az első: "Win32_ProcessStartup". Feladat egy folyamat indítási konfigurációjának leírása.
Set objStartup = objWMIService.Get("Win32_ProcessStartup")
A "SpawnInstance_" metódus az "SWbemObject" objektumból származik. Az "SWbemObject" WMI hierarchia magasabb szintjén álló objektum, egy egyszerű WMI osztály definícióját vagy objektum példányát jelenti. A "SpawnInstance_" feladata egy új objektumpéldány létrehozása, amit most a "Win32_ProcessStartup"-al teszünk meg. Ez így egy kicsit komplikáltnak tűnik, valójában csak annyiról van szó, hogy készítünk egy új "Win32_ProcessStartup" objektumpéldányt a folyamatok konfigurálására.
Set objConfig = objStartup.SpawnInstance_
Tulajdonképpen egyetlen konfigurációs elemet kell megadni, méghozzá az ablak elrejtését. Erre szolgál a "ShowWindow" tulajdonság, ahová beírjuk a fenti konstansba megadott értéket.
objConfig.ShowWindow = HIDDEN_WINDOW
Szükségünk van a konfiguráción túl egy új folyamat példányra (hogy legyen mit konfigurálni), szintén a \root\cimv2 névtérből
Set objProcess = GetObject("winmgmts:root\cimv2:Win32_Process")
Majd a kettőt összerakva el kell indítani a folyamatot a "Create" metódussal. Paraméterei között az első a futtatandó program neve. Második az esetleges gyermekfolyamatok könyvtárát (elérési útját) jelöli. Jelen esetben ilyen nincs, ezért "null" értéket adunk meg. Harmadik a folyamat konfigurációját leíró objektum neve. Végül az azonosító számát kapjuk vissza egy változóba. Tároljuk el a visszatérési értéket az "errReturn" változóba.
errReturn = objProcess.Create("Notepad.exe", null, objConfig, intProcessID)
Utolsó fázisként dolgozzuk fel a visszatérési értéket. Ha nulla, minden rendben zajlott. Ha nullától elérő számot kapunk, hiba lépett fel.
if errReturn = 0 then
wscript.Echo "A folyamat elindítva"
else
wscript.Echo "Sikertelen indítás. Hibakód: " & errReturn
end if