Szolgáltatások parancssorból

Top  Previous  Next

A szolgáltatások speciális, általában a háttérben futó programok, melyek különleges bánásmódban részesülnek. Ilyenek például az "Eseménynapló" ("Event Viewer"), "DHCP-ügyfél" ("DHCP client"), stb. Általában köztük és a felhasználók között egy MMC konzol tartja a kapcsolatot (vagy még az sem). Cikkünkben megnézzük, hogy lehet egy új szolgáltatást regisztrálni a többi között, elindítani, leállítani, konfigurálni és tesszük mindezt parancssorból.

Hol találhatók a szolgáltatások

Tallózzunk el a Vezérlőpult > (Teljesítmény és karbantartás) > Felügyeleti eszközök > Szolgáltatások (Control Panel > (Performance and Manintenance) > Administrative Tools > Services) MMC konzolhoz. Itt látjuk a rendszerbe már regisztrált szolgáltatásokat, itt tudjuk elindítani, leállítani, tulajdonságaikat megtekinteni. Célunk, hogy az általunk készített programot is felvegyük ebbe a listába és ugyanolyan feltételeket teremtsünk neki, mint a már meglévőknek. Néhány fejlesztőkörnyezet (pl.: Delphi, C#) lehetővé teszi új szolgáltatások készítését és regisztrálását, de a teljes kezelést parancssorból is megvalósíthatjuk. Nem kell más hozzá, mint szolgáltatáskénti futtatásra alkalmas lefordított kód. Alábbi példáinkban erre a PROBA..EXE nevet használjuk.

Figyelem!!! Az alábbi parancsok csak akkor fognak lefutni, ha az előforduló összes egyenlőségjel után szóközt teszünk.

Új szolgáltatás regisztrálása

Ha már elkészült a kód első lépésben regisztrálni kell, hogy megjelenjen a többi szolgáltatás között. Ehhez minimálisan a következő parancsra van szükségünk:

 

sc create MyService binpath= c:\windows\system32\proba.exe

 

Ahol a "MyService" a konzolban is megjelenő név. A "binpath" pedig a regisztrálandó fájl neve, elérési úttal együtt.

A fenti utasítás a helyi gépen dolgozik, de az SC hálózatos funkciókkal is el van látva. Ha egy másik gépen akarjuk elvégezni a regisztrációt, adjuk meg az IP címét vagy a nevét UNC szintaxissal:

 

sc \\másikgépneve create MyService binpath= c:\windows\system32\proba.exe

 

Bővítsük tovább a lehetőségeket a típus meghatározásával:

 

sc create MyService binpath= c:\windows\system32\proba.exe type= own

 

Az alábbi típusok állnak rendelkezésünkre:

 

  own = (alapértelmezett) A szolgáltatás nem osztja meg a végrehajtó fájlt más szolgáltatásokkal.

  share = Megosztja a végrehajtó fájlt más szolgáltatásokkal.

  kernel = Illesztőprogram.

  filesys = Illesztőprogram a fájlrendszerhez.

  interact = Interaktív kapcsolatot tart fent a felhasználóval. Csak az "own" vagy "share" típusokkal együtt használható.

 

Következik az indítás módjának meghatározása a "start" paraméter használatával.

 

sc create MyService binpath= c:\windows\system32\proba.exe type= own start= boot

 

Itt pedig a következők közül lehet választani:

 

  boot = Rendszerindításkor indul.

  system = Kernel inicializálás során indul.

  auto = Rendszerindításkor töltődik be és akkor is fut, ha nincs senki bejelentkezve.

  demand = (alapértelmezett) Kézzel kell indítani.

  disabled = Nem lehet elindítani, ha mégis el akarjuk, meg kell változtatni a típust.

 

Ha az adott szolgáltatás indítása sikertelen volt egy hiba miatt - mindegy, hogy mi az - döntenünk kell, hogy a rendszer egésze szempontjából ez milyen súllyal bír. Ennek megfelelően reagál az operációs rendszer.

 

sc create MyService binpath= c:\windows\system32\proba.exe error= normal

 

Az "error" paraméter után kell megadni a hibakezelés módját, az alábbiak figyelembevételével:

 

  normal = (alapértelmezett) Naplózás és egy figyelmeztető üzenet képernyőn való megjelenítése után folytatódik a Windows indítása.

  severe = Naplózás után a gép utolsó helyes konfigurációjával történő újraindítása következik.

  critical = Ugyanaz, mint az előző, de ha nem sikerül az újraindítás a gép hibaüzenettel leáll.

  ignore = Csak naplózás történik, sem hibaüzenet, sem újraindítás, sem leállás nem lesz.

 

Minden szolgáltatás besorolható egy csoportba. A csoportneveket a regisztrációs adatbázisban lehet megtalálni az alábbi cím alatt:

 

HKLM\System\CurrentControlSet\Control\ServiceGroupOrder

 

Alapértelmezésben nem történik besorolás, ezért ha mégis ezt szeretnénk a "group" kapcsolót kell használnunk:

 

sc create MyService binpath= c:\windows\system32\proba.exe error= normal group= csoportnév

 

A függőségek listájában azok a szolgáltatások találhatók, melyeket az adott szolgáltatás előtt kell elindítani. Tehát működéséhez nélkülözhetetlen a másik szolgáltatás(ok) elindítása.

 

sc create MyService binpath= c:\windows\system32\proba.exe depend= másikszolgáltatás1/másikszolgáltatás2

 

Formabontóan a / jellel kell az elemeket elválasztani egymástól.

A már meghatározott függőségek listázásához használjuk az "unumdepend" kapcsolót:

 

sc enumdepend MyService

 

Regisztrált szolgáltatás törlése

Téves regisztráció vagy egyéb okok miatt egy már regisztrált szolgáltatást a "delete" kapcsolóval lehet törölni. Egyetlen paraméterként a törlendő nevét kell megadni.

 

sc delete MyService

 

Ugyanígy egy távoli gépen:

 

sc \\másikgép delete MyService

 

Előfordulhat, hogy nem lesz sikeres a törlés, mert éppen fut a szolgáltatás. Ekkor csak a regisztrációs adatbázisból törlődik a rámutató hivatkozás és a következő újraindítás alkalmával kerül ki a rendszerből.

Szolgáltatás elindítása / leállítása / felfüggesztése

Miután végrehajtottuk a sikeres regisztrációt, akár el is indíthatjuk. Nem kötelező, mert ha automatikus indítást választottunk, a következő rendszerindításkor megteszi helyettünk a Windows. A következő parancs egyfajta kézi indításnak fogható fel:

 

sc start MyService

 

Ugyanígy a kézi leállítás is végrehajtható parancssorból:

 

sc stop MyService

 

A felfüggesztés pedig ily módon:

 

sc pause MyService

 

Meglévő beállítások módosítása

Az "Új szolgáltatás regisztrálása" fejezetben található összes kapcsoló használható a pillanatnyi beállítások megváltoztatására, azzal a különbséggel, hogy nem az "sc create", hanem az "sc config" parancsot kell használnunk. Nézzük például az indítás módjának megváltoztatását:

 

sc config MyService start= demand

 

Megjegyzés hozzáadása

A fenti MMC konzolban látjuk, hogy minden sorban található egy leírás (megjegyzés). Célja a könnyebb azonosítás. Folytatva a hagyományokat mi is lássuk el a szolgáltatásunkat egy rövid szöveggel.

 

sc description MyService "Windows Software Online példa"

 

További kapcsolók használatáról az sc /? kiadásával lehet tájékoztatást kapni.