Vіdminnіst mіzh servіsom i sluzhby vіndovsі. Které služby Windows potřebuje a které lze vypnout. Služby Windows, které lze přepnout do ručního robotického režimu

Pracovní stůl koristuvachіv (místní i vzdálený), nicméně u některých služeb je možné obviňovat - interakci s konzolí (relace s číslem 0, v případě registrace koristuvach lokálně nebo při spuštění služby mstscіz klávesou /console).

Použití režimů pro služby:

  • před spuštěním oplocený;
  • ruční start (pro napájení);
  • automatické spouštění každou hodinu, když je počítač zaneprázdněn;
  • automatické (různé) spouštění (zavedené ve Windows Vista a Windows Server 2008);
  • obov'yazkova služba/ovladač (automatické spuštění a nemožnost (pro corystuvach) spuštění služby).

Režim na pozadí

Spusťte, zastavte a změňte služby Windows

Služby a jejich atributy lze změnit v konzole MMC:

Různé verze operačních systémů mohou mít jednu službu a jiný den. Deyakі programy a programy, jako by byly instalovány, takže mohou vytvářet své vlastní služby.

Seznam služeb operačního systému Microsoft Windows

Ahoj, co vidět mám službu Funkce Popis
DHCP klient dhcp Zaregistrujte a aktualizujte adresy IP a záznamy DNS pro tento počítač. Jako služba Zupinena nemůže počítač získávat dynamické adresy IP a aktualizace DNS.
DNS klient dnscache Klientská služba DNS (dnscache) ukládá názvy DNS (Domain Name System) a registruje je mimo název počítače. Jako služba byla aktualizována, distribuce DNS jmen je trivatime. Výsledky názvů DNS však nebudou uloženy do mezipaměti a názvy počítačů nebudou zaregistrovány.
KtmRm pro koordinátora pobočkových transakcí KtmRm Koordinuje transakce mezi MSDTC a Kernel Transaction Manager (KTM).
ReadyBoost EMDMgmt ReadyBoost Podpora pro zvýšení produktivity systému pomocí další technologie ReadyBoost.
Superfetch SysMain Superfetch Podporuje a zlepšuje produktivitu systému.
Windows Audio Audiosrv Kurátorství s pomocí robotů se zvukem pro Windows. I když je tato služba ozvučená, zvukové zařízení a efekty nebudou správně zpracovány.
Prostor pro karty Windows idsvc Bezpechuu nadіynu mozhlivіst stvennija, cheruvannya a rozkrittya digitální svіdchen.
Automatická aktualizace WUAUSERV Zapněte možnost a nainstalujte aktualizace systému Windows. Pokud je služba zakázána, na kterém počítači není možné tuto schopnost získat automatická aktualizace nebo na webu Windows Update.
Odstranění týdenních procedur (RPC) RpcSs Ujistěte se, že jsou nastaveny koncové body a další služby RPC.

Seznam služeb vytvořených programy společnosti Microsoft

Aplikujte služby vytvořené programy a programy jiných typů

Ahoj, co vidět mám službu Funkce Popis
HTTP server ESET EhttpSrv antivirus zakhist Součást ESET HTTP Server

Můžete spustit klientský program jako službu? Program skin konzole se nemůže spustit jako služba, ale programy s grafickým rozhraním v zásadě takto fungovat nemohou. Ale stejně je možné spustit dodatek jako službu a pomoci nám s programem s původním názvem Manažer nesání.

NSSM je skutečné softwarové zabezpečení s kódem který podporuje všechny operační systémy Microsoft počínaje Windows 2000 a konče. NSSM neovlivňuje instalaci, stačí jej získat a rozbalit. Distribuce obsahuje verze pro 32bitové a 64bitové operační systémy. Program můžete získat z webu nssm.cc, na Narazi Zbývající stabilní verze je 2.21.1, takže se přihlásím.

Abychom demonstrovali sílu NSSM, zkusme spustit Poznámkový blok jako službu na .

Vytvoření služby

Za vytvoření služby pro ně poznámkový blok spustíme příkazovou konzoli, přejdeme do složky s rozbalením NSSM (pro 64bitové Windows) a zadáme příkaz nssm install notepad, čímž se otevře okno grafického instalátoru NSSM. Chcete-li vytvořit službu, jednoduše zadejte cestu k souboru do pole Cesta a klikněte na tlačítko "Instalovat službu". Dodatkovo v poli Možnosti můžete zadat klíče potřebné ke spuštění služby.

Ve fázi vytváření nové služby můžete také přiřadit další parametry.

Na záložce "Vypnutí" jsou uplatněny způsoby prozvonění a timeout, neboť jsou opraveny při běžném dokončení práce nebo nouzovém prozvonění programu. Pokud NSSM deaktivuje zvukový příkaz (například po dokončení programu robota), aktivuje se zvuk ovládání doplňků podle hodnosti personálu. Pokud program nefunguje, pak NSSM může dokončit všechny procesy a podprocesy programu.

Usogo є chotiri etapy dokončení robotického programu a pro omytí pachu vikoristů v tomto pořadí:

V první fázi NSSM je možné generovat a opravovat ctrl+c. Tento způsob je dobrou praxí pro konzolové doplňky nebo skripty, ale ne pro zastosovuetsya grafické doplňky;
Potom NSSM rozpozná všechna okna vytvořená programem a přepíše WM_CLOSE, což iniciuje ukončení programu;
Třetí fáze NSSM vyjmenuje všechny toky vytvořené programem a přepíše jej WM_QUIT, jako by byl odstraněn, jako by program mohl volat vlákno;
Jako zbytek požadavku NSSM můžete zavolat metodu TerminateProcess(), čímž primus dokončíte práci programu.

Je možné zapnout některé nebo všechny metody, nicméně pro různé programy se pro správné dokončení práce programu doporučuje používat různé metody.

Pro čištění je služba NSSM nucena restartovat її. Na záložce "Akce ukončení" můžete změnit automatický čas abnormálního dokončení programu a také nastavit prodlevu, než se program automaticky restartuje.

Na záložce "Input/Output (I/O)" lze nastavit přesměrování vstupu / výstupu programu ze souboru instrukcí.

Na záložce "Prostředí" můžete nainstalovat nové změny doostření nebo jej přemapovat.

Také nemůžete použít grafický shell a okamžitě vytvořit službu v konzole pomocí následujícího příkazu:

nssm nainstalovat poznámkový blok C:\Windows\system32\notepad.exe

Správa služeb

Po vytvoření služby pro pomoc NSSM přejdeme do snap-inu Služby a poznáme službu poznámkový blok. Ve skutečnosti se nezdá, že by to zasahovalo do jiných služeb, můžeme také spustit, spustit nebo změnit režim spouštění. Upozorňujeme však, že jako soubor ke stažení je označen nssm.exe.

A pokud přejdeme do Správce úloh, uvidíme následující obrázek: protože hlavní (batkivsky) proces NSSM běží, služba Poznámkový blok běží jako druhý podřízený proces a doplněk Poznámkový blok běží ve druhém podřízeném proces.

Vzdálená služba

Chcete-li službu odebrat, zadejte příkaz nssm remove notepad a potvrďte, že je odebrána. A zadáním příkazu nssm remove notepad potvrdit se obejdete bez potvrzení.

Spuštění služby v interaktivním režimu

Hlavní funkcí programu coristuvach v oblasti služeb je, že po spuštění programu jej lze použít k pokračování v práci dodatku ze strany coristuvacha - například stiskněte tlačítko nebo zadejte příkaz . Pro koho je nutné získat přístup k novému, který, jak se zdá, není tak snadné získat.

Abyste mohli službu spustit v interaktivním režimu, musíte zaškrtnout políčko „Povolit interakci s pracovním stolem“ v záložce „Vstup do systému“ v nástroji Služby.

A pak spusťte diva Pro službu spuštěnou v interaktivním režimu systém nastaví limit izolace relace (relace 0). V celé relaci můžete strávit více času pomocí služby detekce interaktivních služeb (ui0detect), která indikuje spuštění interaktivních služeb na počítači a daný typ upozornění. Ve Windows 7\Server 2008 je tato služba povolena pod zámkem, zatímco ve Windows 8\Server 2012 je zakázána a nezobrazuje se v grafickém vybavení Služby (tam ji neznám). A co víc, pokud ještě znáte tajnou službu a pokusíte se ji spustit, odeberte si informace o milosti.

Vpravo, aby bylo spuštění povoleno spouštět interaktivní služby na počítači. Proto je znám editor registru, v sekci HKLM\System\CurrentControlSet\Control\Windows parametr DWORD s názvy Žádné interaktivní služby a nastavte jeho hodnotu na 0 .

Poté se zobrazí konzola PowerShell a služba se spustí příkazem:

Start-Service -Název ui0detect

Po kontrole, že služba zobrazení běží, restartujte službu poznámkového bloku a na konci sejměte osu. Vybereme položku "Podívejte se na oznámení"

a spotřebováno v nulté relaci, ve které náš program funguje. Dali robimo s ním potřebné kroky a otočte se zpět.

To je osa řešení pro spouštění programů v podobě služeb Windows. Není to nejhezčí, ale má stejné jméno


Služba Windows NT (služba Windows NT) je speciální proces, který dokáže sjednotit rozhraní pro propojení s operačním systémem Windows NT. Služby se dělí na dva typy – služby Win32, které komunikují s operačním systémem za pomocí Správce řízení služeb (SCM), a ovladač, který funguje za protokolem ovladače. Doplňky pro Windows NT. Více o službách Win32 probereme v tomto článku.

Zastavení služby

Jednou z nejdůležitějších schopností služby je neinteraktivita. Typická služba - není nutná skvělých koristuvách pracovat režim na pozadí. Vzhledem k charakteru služby je nejvhodnější pro implementaci následujících typů doplňků:

  • Servery v architektuře klient-server (například MS SQL, MS Exchange Server)
  • služby Windows NT (Server, Workstation);
  • Serverové (ve smyslu funkčnosti) součásti samostatných programů (například všechny monitorovací programy).

Hlavní orgány služeb

V typickém programu Win32 je služba řízena třemi hlavními orgány. Pojďme se na ně podívat.

Za prvé, proveditelnost správného zastavení (zastavení) robotické služby. Coristuvach nebo jiný doplněk, který vyhraje standardní mechanismy, může být schopen změnit stanici obsluhy - přeložit її zі stanu vykonannya stan pauzi nebo navit zupiniti її na robota. Když budu sloužit před změnou svého života, budu si dávat zvláštní pozor, pro koho mohu provést nezbytný přechod do nové země, například si potřebuji půjčit zdroje.

Jiným způsobem je možnost zahájit službu před registrací corist ve výsledku možnost pracovat bez registrovaného coristuvacha. V každém případě může být služba spuštěna automaticky při startu operačního systému a nechat robota běžet ještě předtím, než se budete moci přihlásit do systému.

І, nareshti, možnost práce v dostatečném nepeckovém kontextu. Kontext zabezpečení WINDOWSNT určuje sadu přístupových práv pro proces k různým systémovým objektům a datům. Z pohledu programu Win32, který je vždy spuštěn v kontextu zabezpečení coristuvach, aktuálně registrovaných v systému, pro službu lze kontext zabezpečení přiřadit k dalšímu kroku. Tse znamená, že ke službě můžete přidělovat sadu přístupových práv k objektům systému na dálku a zároveň obklíčit sféru její činnosti. Stovka služeb používá zvláštní druh kontextu zabezpečení, který se nazývá místní systém. Služba spuštěná v tomto kontextu nemá žádná práva ke zdrojům místního počítače. Žádnou ze sloučených operací nelze použít s oprávněními místního systému, ale jejich kontext může být citlivý místní počítač a nerozpoznatelné jinými počítači merezhі.

Interakce služby s jinými programy

Ať už se jedná o program, pokud máte nějaká práva, můžete se svou službou komunikovat. Vzaєmodіya, v pershu cherga, převod změny na stanici služby, která má být převedena na jednu ze tří stanic - pratsyuche (Start), pauza (Pauza), zapinennya (Pauza), že zupinka je pro dodatečné zásobování SCM. Žádost o tři typy - upozornění na typy služeb (fixace jejich stanic), žádost o změnu konfigurace služby nebo odstranění informací o ní a žádost o programy pro změnu služby.

Chcete-li službu spravovat, musíte nejprve držet rukojeť pomocné funkce Win32 API OpenService. Funkce StartService spustí službu. Pokud potřebujete změnit službu, budete požádáni, abyste klikli na funkci ControlService.

Servisní databáze

Informace o skinové službě jsou uloženy v registru – pod klíčem HKLM\SYSTEM\CurrentControlSet\Services\ServiceName. Existují takové vіdomosti:

  • Typ služby. Vkazuє na těch, které jsou implementovány v dodatku tsmu pouze jedna služba (exkluzivní) nebo їх v dodatku kіlka. Exkluzivní službu lze uplatnit v jakémkoli kontextu bezpečnosti. Služby Dekіlka uprostřed jednoho programu mohou fungovat pouze v kontextu LocalSystem.
  • typ spouštění. Automaticky – služba se spouští při startu systému. Na vimogu - službu spouští ručně koristuvach. Deaktivováno – službu nelze spustit.
  • Název modulu, který má být ikonizován (soubor EXE).
  • Spusťte objednávku na jiné služby. V některých případech je pro správnou funkci služby nutné spustit jednu nebo více dalších služeb. Chcete, aby registr získával informace o službách, které jsou spuštěny před tímto?
  • Kontext zabezpečení služby (toto heslo si ukládám). Za povýšením je kontext zabezpečení nastaven na LocalSystem.

Programy, které potřebují odebrat informace o službě nebo změnit tento nebo jiný parametr služby, jsou v podstatě zodpovědné za změnu informací v databázi služeb v registru. Můžete požádat o pomoc s dalšími funkcemi Win32 API:

  • OpenSCManager, CreateService, OpenService, CloseServiceHandle - pro uzavření (otevření) služby;
  • QueryServiceConfig, QueryServiceObjectSecurity, EnumDependentServices, EnumServicesStatus – k načtení informací o službě;
  • ChangeServiceConfig, SetServiceObjectSecurity, LockServiceDatabase, UnlockServiceDatabase, QueryServiceLockStatus – změna informací o konfiguraci služby.

Vnitřní příloha.

V pořádku je dodatek vinen tím, že je u moci s vyšší hodností a sám - včetně jednoduché sady funkcí (ve smyslu C ++) s jednoduchou funkčností. Podívejme se krátce na kůži.

hlavní funkce

Zdá se, že hlavní funkcí je vstupní bod do jakéhokoli programu konzoly Win32. Při spuštění služby bude kód funkce předem opraven. Po dobu 30 sekund po spuštění je hlavní funkce zodpovědná za volání jazyka StartServiceCtrlDispatcher pro navázání spojení mezi programem SCM. Usі komunіkatsії mіzh be-jaký druh služby jaký dodatek To SCM je nainstalováno uprostřed funkce StartServiceCtrlDispatcher, protože ukončuje práci po spuštění všech služeb v programu.

Funkce ServiceMain

Krim zagalnoprotsesnoy vstupní bod je také vstupním bodem kožních služeb, implementovaných v dodatku. Názvy funkcí, které slouží jako vstupní body služby (pro zjednodušení je budeme všechny nazývat ServiceMain), jsou předávány SCM v jednom parametru za hodinu do volání StartServiceCtrlDispatcher. Když spustíte skin service pro ServiceMain viscon, vytvoří se proud vody.

Otrimavshi keruvannya, ServiceMain první pro všechny může zaregistrovat vzorek požadavků před službou, funkce Handler, vlastní pro službu skin jako dodatek. Po tomto ServiceMain zazní pro inicializaci služby následující zvuk - viz paměť, znovu načtěte data. Služba je stále v procesu spouštění a nedošlo k žádným každodenním poruchám. Upozornění jsou pro další pomoc funkce SetServiceStatus. Všechny týdny, kromě posledního, jsou způsobeny parametrem SERVICE_START_PENDING a zbytek - parametrem SERVICE_RUNNING. Periodicitu hovorů určuje poskytovatel služby, což se zdá vycházet z mysli: dočasnost časového intervalu mezi dvěma soudními hovory SetServiceStatus nezodpovídá za přepsání hodnoty parametru dwWaitHint předaného SCM během první dva hovory. A pokud ne, pak SCM, aniž by v hodinu sundal čergovovu upomínku, zahájí službu s primus primus. Tento způsob umožňuje, aby servisní situace zmizela při startu po výskytu tichých nebo jiných poruch (předpokládejme, že služba nezní interaktivně a lze ji spustit bez pádu). Zvichayna praxe v tom, že po dokončení prvního návrhu inicializace, SCM by měl být aktualizován.

Funkce manipulátoru

Jak jsem hádal více, Handler je prototypem funkce zpětného volání, žádosti o požadavek před službou, vlastní služby skinu pro dodatek. Handler je volán, když je potřeba o službu požádat (spustit, pozastavit, aktualizovat, spustit, upozornit Stanu se in-line), že vykonuє nebhіdnі vіdpovіdno před zapі dії, po kterém novіdomlyaє nový tábor SCM.

Jeden požadavek je obzvláště významný - požadavek, který by měl být přijat po dokončení robotického systému (Shutdown). Tsey požádá o signál o nutnosti deinicializace vikomta a že bude dokončena. Microsoft uvádí, že dokončení služby skinu trvá 20 sekund, poté začne znít jako primus. Demonstranti ukázali, že Umova mysl vítězí a služba kamen primus pokračuje až do konce této hodiny.

Servisní zabezpečovací systém

Be-yaka diya nad službami bude vyžadovat další práva z dodatku. Všechny programy mají právo uzamknout SCM, vzkřísit služby a znovu zkontrolovat blokování databáze služeb. Registrovat novou službu do systému nebo blokovat databázi služby mohou pouze programy, protože mohou mít administrátorská práva.

Kožní služba může mít bezpečnostní deskriptor, který popisuje, jak může mít nárok na tuto jinou operaci. Pro uzamčení:

  • Všechna práva lze změnit SERVICE_QUERY_CONFIG, SERVICE_QUERY_STATUS, SERVICE_ENUMERATE_DEPENDENTS, SERVICE_INTERROGATE a SERVICE_USER_DEFINED_CONTROL;
  • Koristuvachі, scho pro vstup do skupiny Power Users a LocalSystem oblіkovy záznam, navíc umožňují práva SERVICE_START, SERVICE_PAUSE_CONTINUE a SERVICE_STOP;
  • Koristuvachі scho, scho vstup do skupin Administrators a System Operators, mayut right SERVICE_ALL_ACCESS.

Služby a interaktivita

Pro propagační účely mohou být interaktivní služby omezeny na kontext zabezpečení LocalSystem. To je způsobeno zvláštnostmi zobrazení na obrazovce monitoru v systému Windows NT, například takový objekt jako "Desktop" Oblіkovogo záznam, Zobrazit LocalSystem. Nezvazhayuchi těm scho v perevazhnіy bіlshostі vipadkіv Tse obmezhennya JE nesuttєvim ale іnodі іsnuє neobhіdnіst stvoriti služba yak vivodila b іnformatsіyu na monіtora na obrazovce i na tsomu vikonuvalasya používaných v kontekstі BEZPEKA vіdmіnnomu od LocalSystem, napriklad, serveru prog složka spouštění programů na vіddalenomu počítači.

Fragment kódu. Ilustruji takovou možnost.

Pro tento fragment musíte požádat o požadavek, přidat část programu do RPC, služba zobrazí textová upozornění na obrazovce monitoru.

Služba zadku (klíčové fragmenty)

Pojďme se podívat na klíčové fragmenty zprávy mého Z ++, implementující službu Windows NT. Pro přesnost jsou části kódu vynechány.

hlavní funkce

V indikacích kód hlavní funkce.

Funkce ServiceMain

Zejména kódy, které jsou umístěny v ServiceMain, jsou ty, které často nelze oddálit zpoždění další operace, zvláště pokud je chybné, že se chyba vyskytuje v operačním systému kvůli bohaté úloze. Pokud je operace časově náročnější, než když má parametr interval volání SetServiceStatus hodinový interval, služba nemůže okamžitě odeslat nadcházející upozornění, po kterém by měl SCM zavolat robota. Nedopalky potenciálních operací lze využít k volání funkcí robota při velkých timeoutech, nebo jednorázovému přečtení velkého množství informací z dostatečného opotřebení. Navíc takový pidhid při daňové službě absolutně nestagnuje, střípky programu u daňového vybavení provázejí velké pauzy, které jsou pro obchodníka nutné.

Aby se tento problém vyřešil, měly by být všechny operace ze vzájemné závislosti s SCM prováděny ve zdravém hrnci, který neleží ve vodě, což je vyžadováno ve fázi inicializace.

Odečty mají algoritmus pro správné spuštění služby, což je další tok.

Funkce manipulátoru

Indikace mají kód funkce Handler a další toky. U požadavků "Stop" a "Shutdown" je přepsán algoritmus správného volání služby, podobný tomu, který je přepsán při spuštění služby, s tím rozdílem, že místo parametru SERVICE_START_PENDING z SetserviceStatus je parametr SERVICE_STOPSERVPENDING prošel a náhrada je SERVICE_RUNNING.

V ideálním případě pro pití „Pauza“ a „Pokračovat“ je to také další řada, která vyhraje řadu. Dopitlivy chitach mohou snadno provádět jógu, spirálovitě na tomto zadku.

Višňovok

Na závěr bych rád poznamenal, že s přechodem na Windows NT 2000 vývoj služeb změnu nepoznal. Služby jsou stejně jako dříve ochuzeny o důležitou část software na platformě Windows, což dává prodejcům široké pole působnosti.


// Funkce podobná jako u MessageBox Win32 API int ServerMessageBox(RPC_BINDING_HANDLE h, LPSTR lpszText, LPSTR lpszTitle, UINT fuStyle) (DWORD dwThreadId; HWINSTA hwinstaSave; HDesk " a "DeskIntcessstaowd" a "DeskIndSetowd Getowd Getowd". (); hdeskSave = GetThreadDesktop(dwThreadId); // Změňte kontext zabezpečení na tom //, který je před objekty "Window station" a "Desktop" //. RpcImpersonateClient(h); hwinstaUser), hdeskUser = OpenDesktop ("Výchozí", 0, FALSE, MAXIMUM_ALLOWED); RpcRevertToSelf(); urn 0; ) SetThreadDesktop(hdeskUser); // Zobrazit standardní textové pole. result = MessageBox(NULL, lpszText, lpszTitle, fuStyle); 'Ano // " Window station" a "Desktop". SetThreadDesktop(hdeskSave); SetProcessWindowStation(hwinstaSave); CloseDesktop(hdeskUser); CloseWindowStation(hwinstaUser); return result; ) void main() ( SERVICE_TABLE_ENTRY steTable = (), (NULLNAME, ServiceMain SLUŽBA , NULA) ); // Nastavení připojení z SCM. Střed těchto funkcí // použijte k přijímání a odesílání požadavků. StartServiceCtrlDispatcher(steTable); ) void WINAPI ServiceMain (DWORD dwArgc, LPSTR *psArgv) ( // Okamžitě zaregistrujte obsluhu požadavku. hSS = RegisterServiceCtrlHandler(SERVICENAME, ServiceHandler); sStatus.dwCheckPoint = 0; sStatus.dwControlsAcceptedUSE_tusTSTOP.sStatus.sStatus.sStatus.sStatus dwServiceSpecus .dwServiceType = SERVICE_WIN32_OWN_PROCESS sStatus.dwWaitHint = 0 sStatus.dwWin32ExitCode = noerror // pro іnіtsіalіzatsії služby viklikaєtsya funktsіya InitService () ;, Otázky na slovnyk.org služby v protsesі іnіtsіalіzatsії .// Pro sinhronіzatsії toku stvoryuєtsya Podiya .// Pіslya tsogo zapuskaєtsya robochem potіk, d la // Synchronizace toho, co // vytvoří inicializaci dílčí služby.InitService();SetEvent(hSendStartPending);if(WaitForSingleObject(hSendStartThread, 2000) != WAIT _OBJECT_0) ( TerminateThread(hSendStartThread, 0); ) CloseHandle(hSendStartPending); CloseHandle(hSendStartThread); hWork = CreateEvent(NULL, TRUE, FALSE, NULL); hServiceThread = CreateThread(NULL, 0, ServiceFunc, 0, 0, &dwThreadId); sStatus.dwCurrentState = SERVICE_RUNNING; SetServiceStatus(hSS, &sStatus); ) // Funkce pro vlákno, která na sekundu posílá upozornění SCM // o těch, že probíhá proces inicializace. Funkce robota // končí, když se obnoví modul hSendStartPending. DWORD WINAPI SendStartPending(LPVOID) ( sStatus.dwCheckPoint = 0; sStatus.dwCurrentState = SERVICE_START_PENDING; sStatus.dwWaitHint = 2000; // "Zpožděno" na 1 sekundu. Ani na 1 sekundu // neukončila inicializace služby // ), přemohl dwCheckPoint++;if(WaitForSingleObject(hSendStartPending, 1000)!=WAIT_TIMEOUT) break; ) sStatus.dwCheckPoint = 0; návrat 0; ) // Funkce, která inicializuje službu. Čtení dat // vzpomínání atd. void InitService() (...) // Funkce pro kontrolu servisního kódu. DWORD WINAPI ServiceFunc(LPVOID) ( while (true) (​if (!bPause) ( // Toto je místo, kam má být předán kód, který zní // vikonu jako cyklické operace... ) if (WaitForSingleObject(hWork, 1000)!=WAIT_TIMEOUT ) Break; ) návrat 0; TRUE, FALSE, NULL), hSendStopThread = CreateThread(NULL, 0, SendStopPending, NULL, 0, & dwThreadId); ) SetEvent(hSendStopPending), CloseHandle(hServiceThread), CloseHandle(hWork); ServiceStatus(hSS, &sStatus); přestávka; case SERVICE_CONTROL_PAUSE: bPause = true; sStatus.dwCurrentState = SERVICE_PAUSED; SetServiceStatus(hSS, &sStatus); přestávka; case SERVICE_CONTROL_CONTINUE: bPause=true; sStatus.dwCurrentState = SERVICE_RUNNING; SetServiceStatus(hSS, &sStatus); přestávka; case SERVICE_CONTROL_INTERROGATE: SetServiceStatus(hSS, &sStatus); přestávka; výchozí: SetServiceStatus(hSS, &sStatus); přestávka; ) ) // Funkce vlákna podobná SendStartPending // pro blok služby. DWORD WINAPI SendStopPending(LPVOID) ( sStatus.dwCheckPoint = 0; sStatus.dwCurrentState = SERVICE_STOP_PENDING; =WAIT_TIMEOUT) přerušení;) sStatus.dwCheckPoint = 0; vrátit 0 ;)

Jak spustit program ve službě Windows



Můžete spustit klientský program jako službu? V jednom z článků způsoby vytváření služby Windows běžnými operačními systémy. Nelze však spustit doplněk skin konzole jako službu, ale programy s grafickým rozhraním v zásadě takto fungovat nemohou. Ale stejně je možné spustit dodatek jako službu a pomoci nám s programem s původním názvem Manažer nesání.

NSSM je skutečné softwarové zabezpečení s otevřeným kódem, které podporuje všechny operační systémy Microsoft, počínaje Windows 2000 až Windows 8. NSSM nevyžaduje instalaci, stačí stáhnout a rozbalit. Distribuce obsahuje verze pro 32bitové a 64bitové operační systémy. Program můžete získat ze stránky nssm.cc, v tuto chvíli je zbývající stabilní verze 2.21.1, takže vyhraju.
Abychom demonstrovali sílu NSSM, zkusme spustit Windows Poznámkový blok jako službu Windows 8.1.

Vytvoření služby

Za vytvoření služby pro ně poznámkový blok spustíme příkazovou konzoli, přejdeme do složky s rozbalením NSSM (pro 64bitové Windows) a zadáme příkaz

Kód:

Instalační poznámkový blok nssm

jako okno grafického instalátoru NSSM. Chcete-li vytvořit službu, jednoduše zadejte cestu k souboru do pole Cesta a klikněte na tlačítko "Instalovat službu". Kromě toho můžete v poli Možnosti zadat klíče, které jsou nutné ke spuštění služby.

Ve fázi vytváření nové služby můžete také přiřadit další parametry.

Na záložce Vypnutí se uplatní způsoby prozvonění a timeout, protože se obnoví při běžném dokončení práce nebo nouzovém prozvonění programu. Pokud NSSM deaktivuje zvukový příkaz (například po dokončení programu robota), aktivuje se zvuk ovládání doplňků podle hodnosti personálu. Pokud program nefunguje, pak NSSM může dokončit všechny procesy a podprocesy programu.

Usogo є chotiri etapy dokončení robotického programu a pro omytí pachu vikoristů v tomto pořadí:

V první fázi se NSSM pokouší vygenerovat a odeslat příkaz Ctrl+C. Tento způsob je dobrý pro konzolové doplňky nebo skripty, ale ne pro grafické doplňky;
Potom NSSM rozpozná všechna okna vytvořená programem a přepíše WM_CLOSE, což iniciuje ukončení programu;
Třetí fáze NSSM vyjmenuje všechny toky vytvořené programem a přepíše jej WM_QUIT, jako by byl odstraněn, jako by program mohl volat vlákno;
Jako zbytek požadavku NSSM můžete zavolat metodu TerminateProcess(), čímž primus dokončíte práci programu.

Je možné zapnout některé nebo všechny metody, nicméně pro různé programy se pro správné dokončení práce programu doporučuje používat různé metody.

Pro čištění je služba NSSM nucena restartovat її. Na záložce Akce ukončení můžete změnit automatickou akci v případě abnormálního dokončení programu robota a také nastavit prodlevu před automatickým restartováním programu.

Na záložce „Input/Output (I/O)“ můžete nastavit přesměrování na vstup/výstup programu z instrukcí souboru.

Na záložce „Prostředí“ můžete nainstalovat nové změny pro službu nebo ji odpovídajícím způsobem přemapovat.

Také nemůžete použít grafický shell a okamžitě vytvořit službu v konzole pomocí následujícího příkazu:

Kód:

nssm nainstalovat poznámkový blok "C:\Windows\system32\notepad.exe"

Správa služeb

Po vytvoření služby pro pomoc NSSM přejdeme do snap-inu Služby a poznáme službu poznámkový blok. Ve skutečnosti se nezdá, že by to zasahovalo do jiných služeb, můžeme také spustit, spustit nebo změnit režim spouštění. Upozorňujeme však, že jako soubor ke stažení je označen nssm.exe.

A pokud přejdeme do Správce úloh, uvidíme následující obrázek: protože hlavní (batkivsky) proces NSSM běží, služba Poznámkový blok běží jako druhý podřízený proces a doplněk Poznámkový blok běží ve druhém podřízeném proces.

Z pohledu softwarového systému. K tomu je zcela přirozené, že se zaměříme na diskusi o službách v kontextu Windows 7. Pojďme si ještě podruhé promluvit o způsobech optimalizace služeb dostupných ve Windows 7. Tento článek je přiřazen nové Funkce Windows 7 – Spustit služby Start. Nejprve pojďme dolů k API, říkejme tomu velký obrázek služeb.

co je to služba?

Servis - ce vnitřní mechanismus, vbudovaniya na operačním sále systém Windows. Můžete používat služby se speciálními programy, které fungují nezávisle v kontextu streamování jádra. Služby se aktivují ve formě speciálních programů, které lze nakonfigurovat tak, aby fungovaly od okamžiku zapnutí (zachycení) systému až do jeho vypnutí bez ohledu na přítomnost coristuvacha. Tobto služby mohou pratsyuvati, navit akscho koristuvach není vykonav vkhіd do systému.

Je důležité, abyste lépe spouštěli služby spouštěním úloh, které běží na pozadí a nenarušují operaci probuzení. Služby systému Windows jsou zodpovědné za všechny druhy aktivit na pozadí, počínaje vzdáleným voláním procedur (RPC), zařazovací službou tiskárny a až po sledování umístění v síti.

S pomocí bohatosti Windows rostl počet služeb a najednou se počet služeb zvyšoval. Buďme upřímní, služby na pozadí Windows jsou velmi bolestivé - operační systém Objednávka je doručena bez služeb. Nezávislí dodavatelé softwaru (ISV) a tyto programy navíc poskytují ještě více služeb. Například služby aktualizace softwaru. Zároveň jsou důstojníci služby kriticky důležití a nezbytní v procesu náboru, v tu hodinu, protože je třeba další ospravedlnění, pokud se koristuvách zpívat nepodaří vstoupit do systému, a ostatní nevyžadují spuštění, dokud se nazývají. Bez ohledu na to, když se podíváte na seznam aktuálně spuštěných služeb, hledejte anonymní objekty, protože není třeba pracovat na schématu 24x7.

Co je špatného na službách, co funguje 24 let za dobu 7 dní denně?

Se službami, které pracují na schématu 24x7, je spojeno několik problémů. V první řadě je možné cvičit (stisknout režim na pozadí), tak proč to nespotřebovat novým způsobem? Pokud jakýkoli proces spouštění (včetně služeb) používá drahé paměťové a procesorové prostředky, lze jej použít pro jiné servisní programy. Jak obnovujete všechny současně spuštěné služby, zápach se hromadí v paměti, úchytech, proudech a využití procesoru. Všechny tyto zdroje „vitrate“ snižují celkovou produktivitu počítače a aby se vyrovnaly s poškozením, je počítač slabý a výkonný. Před tím byly úlomky spousty služeb nastaveny na automatický start (oprava při startu systému na hodinu), smrdí na hodinu zawantazhennya počítače.

Jiným způsobem je spotřeba zdrojů přímo indikována úsporou elektrické energie. Chim více ješitnosti na CPU, více energie šetří počítač. Může to být důležité pro notebooky a může to trvat hodinu práce s bateriemi na několik let.

Za třetí, následná práce neproduktivního softwaru může být přenesena do paměti a celková nestabilita systému. Tse vede před havárií v robotických programech, nareshti, počítač.

Nareshti, jako by služba fungovala podle schématu 24x7 a jako by byla služba dobrá doma (jak se může objevit v oblíbených skinových programech - např. PDF Reader), což vytváří velkou plochu pro útok. Útočník o nich může získat informace, že je program velmi populární, nainstalovat službu, která funguje v režimu 24x7, a zkusit hacky zakázat přístup k počítači.

Vrakhovuchi všechny výše uvedené, můžete se divit, proč tolik maloobchodníků, aby jejich služby pro trvalé zaměstnání, jako by smrad může být další příležitost. Až do Windows 7 bylo k dispozici několik možností pro spuštění služeb:

  • Zakázáno (Vimkneno) znovu povolit službu a zabránit spuštění a spuštění služeb ležících ladem - to znamená, že koristuvach se provinil ručním zapnutím služby z vypínacího panelu nebo příkazového řádku
  • Manuál spusťte službu ke spotřebě (pro připojení k závislostem jiných služeb) nebo při volání služby s programy pro další rozhraní API, jak je znázorněno níže
  • Automatický spustit službu po přihlášení
  • Automatické zpoždění- nový typ spouštění, který se objevil ve Windows Vista, s jehož pomocí se služba spouští po dokončení spouštění těch raných operací, které urychlí spouštění systému.

Bohužel mnoho nezávislých dodavatelů softwaru (včetně samotného Microsoftu) nadále nastavuje své služby na automatické (automatizované) nebo automatické odložené spuštění (automaticky odložené), což je příklad všech nejjednodušších řešení. Služba prostě funguje 24x7 a je vždy k dispozici, v případě potřeby opětovné ověření vkladů nebo běží služba.

Je možné nastavit anonymní aplikace základních služeb, které mohou vést k výrazně menšímu množství zdrojů a stát se bezpečnější, nefungující v režimu 24x7. Přemýšlejte například o aktualizační službě, jako by kontrolovala dostupnost nových aktualizací pro program. Pokud se počítač nepřipojí k merezhі nemá IP adresu, tak proč by to mělo fungovat? Pokud nemůžete nic dělat, měli byste nyní připravit pracovní program, takže nedělejte nic? Zamyslete se nad službou řídících politiků, jak zvítězit v hodině změn skupinové zásady nebo pokud je počítač připojen k doméně nebo pokud je počítač připojen k mému domovu, služba je stále proveditelná.

Vzhled služeb spuštěním na spoušti

Virishennya vyschevkazanyh problémy polygaє ve službě vidennі zі stan stálá práce» Jiné typy aktivit na pozadí, jako jsou naplánované úlohy nebo služby, které jsou spouštěny spouštěčem. Tento článek se týká Windows 7 Trigger Start Services. O naplánovaných úlohách systému Windows 7 můžete říci spoustu věcí, které budou v nadcházejících článcích rozebrány.

Tiskárny