Windows 7 Service programozás kiváltó (h

Mi inkább úgy a szolgáltatás üzemeltetési feladatokat a háttérben zavarása nélkül a felhasználó munkáját. Services a Windows felelős mindenféle háttér aktivitás, kezdve szolgáltatás (Remote Procedure Call, RPC), nyomtató-kezelő szolgáltatás és legfeljebb Network Location Awareness.

Másodszor, ezek az elpazarolt erőforrásokat, közvetlen hatással van a villamosenergia-fogyasztásra. Minél nagyobb a terhelés a CPU, adunk, a nagyobb teljesítmény a számítógép fogyaszt. Ez kritikusan fontos lehet a laptopok és lerövidítheti az akkumulátor élettartamát néhány órára.

Harmadszor, az állandó munka improduktív szoftverek okozhatnak szivárgást és a teljes memória rendszer stabilitását. Ez ahhoz vezethet, hogy alkalmazási hiba, és végső soron a számítógépet.

Végül, ha a szolgáltatás fut 24x7, és ha ez egy jól ismert szolgáltatás (amely nem lehet népszerű, minden alkalmazásban - például PDF Reader), létrehoz egy nagyobb támadási felületet. A támadó képes használni az információt, hogy egy bizonyos népszerű alkalmazás telepíti a szolgáltatás fut 24x7, és próbálja feltörni, hogy hozzáférjen a számítógéphez.

Igaz, akkor miért olyan sok fejlesztő beállítani a szolgáltatások állandó munkát, ha van egy másik lehetőség. Még mielőtt a Windows 7 néhány módszer, hogy elindítsa a szolgáltatás elérhető:

  • Mozgáskorlátozottak (fogyatékos) teljesen letiltja a szolgáltatást, és megakadályozza, hogy a futás, és indítsa el a függő szolgáltatások - ez azt jelenti, hogy a felhasználónak lehetővé teszi a szolgáltatási kézzel Vezérlőpult vagy a parancssor
  • Kézi (Manual) elindítja a szolgáltatást szükség (mivel a függőségek a szolgáltatás), vagy ha a szolgáltatás meghívásakor révén az érintett API alkalmazások, mint azt az alábbi
  • Automatikus (Auto) elindítja a szolgáltatást bejelentkezéskor
  • Automatikus Késleltetett (Automatikus (Késleltetett indítás) - egy új kezdet típusú bevezetett Windows Vista segítségével, amely a dob a szolgáltatás után történik a letöltés befejeződött, és végre üzembe, ami felgyorsítja a rendszer indításakor

Sajnos sok ISV (beleértve a nagyon Microsoft) is szabhatja a szolgáltatás automatikusan (Automated) vagy az automatikus késleltetett indítás (Automatic Késleltetett), mint ez az egész úgy tűnik, egy egyszerű megoldás. A szolgáltatás csak működik 24/7 és mindig rendelkezésre áll, megszüntetve a szükségességét, hogy ellenőrizze a függőségeket, vagy hogy a szolgáltatás fut.

A megjelenése szolgáltatások elindítását a ravaszt

Az utolsó pont utal a bővíthetőség. Mint fejlesztő, akkor beállíthatja bármilyen ETW eseményt kiváltó olyan szolgáltatás, amely ad egy nagyon jó eszköz, hogy ellenőrizzék a start és stop az alkalmazás szolgáltatásokat.

Tehát mi a kiváltó ok?

A kiváltó áll:

  • A típus a kiváltó esemény
  • Altípus kiváltó esemény
  • Intézkedéseket kell hozni a bizottság egy kiváltó esemény
  • Egy vagy több adatelemek társított a ravaszt (Az adott típusú kiváltó események)
    Altípus és a kapcsolódó trigger adatokat tételek együttesen határozza meg a feltételeket a bejelentés szolgáltatás a rendezvény. Format adatelem típusától függ a kiváltó esemény; adat elem állhat egy bináris, string vagy többsoros adatokat.

Munka indítás start Services
Sajnos, a felhasználói felület a Windows 7 szolgáltatások MMC konzolt, nem grafikus ábrázolás indítás start Services. Azonban két lehetősége van. Továbbra is használhatja a jó öreg sc.exe (Service Configuration parancssori eszköz), vagy használja a módszert WIN32 ChangeServiceConfig2 szoftverkonfigurációhoz szolgáltatások indítási lehetőségek, mint látni fogjuk ezt a cikket.

Segítségével SC.exe adatszolgáltatás ravaszt kérés (Query Service Trigger információ)
Itt az ideje, hogy jól szórakozik. Kezdjük információt a konfiguráció egyes szolgáltatások. Az általános formája a használata a szolgáltatás konfiguráció a következő:

sc [Command] [szolgáltatás neve] .


Ahol a kiszolgáló nem kötelező, és alapértelmezés szerint dolgozik a helyi számítógépen:

  • parancs - a kívánt műveletet elvégezni, például kiváltó adatkérés
  • szolgáltatás neve - ez a szolgáltatás neve, amellyel dolgozni szeretne
  • lehetőségeket - a különböző értékeket (opció), amit végre kell beállítani Service

Kezdjük egy adott szolgáltatás kérelmet annak kiváltó konfigurációt. Ehhez meg kell futtatni a Windows Shell ablakban:

[Ist] 1. Nyissa meg a „Start” menü.
2. Írja be a cmd parancsot a keresőmezőbe.
3. Válassza ki a cmd.exe.
4. Írja be sc qtriggerinfo w32time, majd nyomja meg az Enter gombot.
Itt van, hogyan kell kinéznie:

Mint látható, mi a kért adatokat W32time szolgáltatás trigger, amely úgy van kialakítva, hogy indítsa el, ha csatlakoztat egy számítógépet a tartományhoz, és megáll, ha megszakad a tartományból.

A Microsoft frissítette a Windows 7 parancssori alkalmazás sc.exe, hogy támogassa a konfiguráció és a támogatott ravaszt. Írja sc triggerinfo Windows Shell ablakban, és nyomja meg az Entert. Az eredmény hasonló lesz az alábbi, és tartalmazni fogja az összes a kiváltó és arról, hogyan kell beállítani a szolgáltatást használni őket.

LEÍRÁS:
Ez megváltoztatja a jellemzői a szolgáltatás aktiválását.
HASZNÁLAT:
sc <сервер> triggerinfo [szolgáltatás neve] <параметр1> <параметр2>.

Szoftver telepítése indítás start Services segítségével ChanceServiceConfig2
További érdekes szempontjából fejlesztési szempont a szolgáltatások létrehozását, attól függően, hogy a ravaszt, és használja a kódot állíthatja be a szolgáltatást. A Windows 7, akkor használja ezt a funkciót, hogy beállítsa a ChangeServiceConfig2 szolgáltatás trigger adatokat és QueryServiceConfig2 függvényt hívja őket.

Regisztráció szolgáltatás ravaszt hívást ChangeServiceConfig2 SERVICE_CONFIG_TRIGGER_INFO paraméter dwInfoLevel és bemutatása adatregisztráció trigger SERVICE_TRIGGER_INFO szerkezet beállításával lpinfo. Ezen kívül több trigger adatokat lehet megadni. Az alábbiakban egy példát szolgáltatás telepítő függvényt, amely létrehozza a ravaszt USB-eszközön szolgáltatás hívott myService.

meghatározzák SERVICE_NAME L "myService"
// A készülék beállítása guid
statikus const GUID GUID_USBDevice = 0x53f56307, 0xb6bf, 0x11d0,
0x1e, 0xfb, 0x8b >>;

BOOL _SetServiceToStartOnDeviceTrigger ()
BOOL fResult = FALSE;

SC_HANDLE hScm = OpenSCManager (
NULL, // helyi gépen
NULL, // aktív adatbázis
SC_MANAGER_CONNECT);

if (hScm! = NULL)
SC_HANDLE hService = OpenService (
hScm,
SERVICE_NAME,
SERVICE_ALL_ACCESS);

Ha (hService! = NULL)

LPCWSTR lpszDeviceString = L "UsbStor \\ GenDisk";
SERVICE_TRIGGER_SPECIFIC_DATA_ITEM deviceData =;
deviceData.dwDataType = SERVICE_TRIGGER_DATA_TYPE_STRING;
deviceData.cbData =
(Wcslen (lpszDeviceString) +1) * sizeof (WCHAR);
deviceData.pData = (PBYTE) lpszDeviceString;


SERVICE_TRIGGER st;
st.dwTriggerType =
SERVICE_TRIGGER_TYPE_DEVICE_INTERFACE_ARRIVAL;
st.dwAction = SERVICE_TRIGGER_ACTION_SERVICE_START;
st.pTriggerSubtype = (GUID *) GUID_USBDevice;
st.cDataItems = 1;
st.pDataItems = deviceData;


SERVICE_TRIGGER_INFO sti;
sti.cTriggers = 1;
sti.pTriggers = st;
sti.pReserved = 0;

fResult = ChangeServiceConfig2 (
hService,
SERVICE_CONFIG_TRIGGER_INFO,
STI);
>
CloseServiceHandle (hService);
>
CloseServiceHandle (hScm);

if (! fResult)
printf ( "Service ravaszt regisztráció sikertelen \ n (.)"
GetLastError ());
>
visszatérés fResult;
>


Megjegyzés: Az összes szolgáltatás által vezérelt Service Control Manager (SCM), amely megbeszéljük egy másik cikkben.

Láthatjuk a fenti kódrészletet, akkor előbb a nyél (hScm) az SCM hívja openSCManager. Ezután hívjuk openService, és adja át a kart a SCM - hscm, és a szolgáltatás nevét - SERVICE_NAME, amelyre szeretnénk elérni. Az utolsó paraméter, SERVICE_ALL_ACCESS jelzi, hogy teljes hozzáférést biztosít a szolgáltatásokhoz. Tekintettel arra, hogy most már a szolgáltatás egy érvényes fogantyú, kezdjük hozzon létre egy külön szerkezet, amit hamarosan konfigurálására használni a szolgáltatást.

SERVICE_TRIGGER_SPECIFIC_DATA_ITEM típusát adja kiváltó esemény. Olyan adatokat tartalmaz az eseményt kiváltó szolgáltatást. A mi esetünkben meg egy leíró szöveget a kapcsolat USB-meghajtót.

Aztán meg a szerkezet SERVICE_TRIGGER, amely szolgáltatást kiváltó esemény. Megjegyzendő, hogy ez az, ahol mi meg a ravaszt típusa (csatlakozó eszköz), akció (Start of service), és a altípusa a ravaszt (egy bizonyos fajta USB-meghajtók). Ezután meghatározzuk egy eszköz, amely hatására a szolgáltatást. Vegye figyelembe, hogy kiválaszthatja eszközök listáját és azok GUID. Azt is meg kell jegyezni, hogy nem akarjuk, szolgáltatás aktiválódik, ha csatlakoztatja az USB-eszközön, például egér vagy kamera. Azt akarjuk, hogy a szolgáltatás elindításához csak az USB-meghajtót.

Végül meghatározzuk a SERVICE_TRIGGER_INFO tartalmazó szerkezet esetén adatszolgáltatás ravaszt. Ez a szerkezet csak azt jelzi, SERVICE_TRIGGER szerkezet kértük korábban száma és a flip-flop, amelyek száma ebben az esetben egyenlő eggyel.

Most tudjuk hívni a funkciót, és adja át ChanceServiceConfig2 kezelni a szolgáltatás, amit szeretne beállítani SERVICE_CONFIG_TRIGGER_INFO paraméter, ami azt jelzi, hogy szeretnénk beállítani a szolgáltatást ravaszt, Null.

Ez minden. Ha mindent helyesen, a szolgáltatás elindításához, ha csatlakoztat egy USB merevlemez.

A következő cikkben fogok beszélni, hogyan kell írni egy egyszerű megvalósítását .NET szolgáltatás, amit létrehozott indítani, ha csatlakoztatja az USB-meghajtót.

Akkor is működik Windows 7 indítás start Services a Windows 7 Képzés Online, amely része a Channel 9 Oktatóközpontban.

Kapcsolódó linkek

Kapcsolódó cikkek