Vídminníst mízh servísom i sluzhby víndovsí. Koje su usluge potrebne sustavu Windows, a koje se mogu isključiti. Windows usluge koje se mogu prebaciti na ručni robotski način rada

Radna tablica koristuvachív (i lokalna i udaljena), međutim, za neke usluge moguće je okriviti - interakciju s konzolom (sesija s brojem 0, u slučaju registracije koristuvach lokalno ili na početku usluge mstscíz tipkom /console).

Korištenje načina za usluge:

  • ograđen prije lansiranja;
  • ručno pokretanje (za napajanje);
  • automatsko pokretanje svaki sat kada je računalo zauzeto;
  • automatsko (razno) pokretanje (uvedeno u Windows Vista i Windows Server 2008);
  • obov'yazkova usluga/vozač (usluga automatskog pokretanja i nemogućnosti (za corystuvach) pokretanja).

Pozadinski način rada

Pokrenite, zaustavite i promijenite Windows usluge

Usluge i njihovi atributi mogu se mijenjati u MMC konzoli:

Različite verzije operativnih sustava mogu imati jednu uslugu i drugi dan. Deyakí programi i programi, kao da se instaliraju, tako da mogu kreirati vlastite usluge.

Popis usluga operacijskog sustava Microsoft Windows

Im'ya, što vidjeti im'ya usluga Funkcije Opis
DHCP klijent dhcp Registrirajte i ažurirajte IP adrese i DNS zapise za ovo računalo. Kao Zupinena usluga, računalo ne može pokupiti dinamičke IP adrese i preuzeti DNS ažuriranja.
DNS klijent dnscache DNS klijentska usluga (dnscache) sprema DNS (sustav naziva domene) imena i registrira ih izvan imena računala. Kao servis, ažuriran je, distribucija DNS imena je beznačajna. Međutim, rezultati DNS imena neće biti spremljeni u predmemoriju, a nazivi računala neće biti registrirani.
KtmRm za koordinatora transakcija poslovnica KtmRm Koordinira transakcije između MSDTC-a i Kernel Transaction Managera (KTM).
ReadyBoost EMDMgmt ReadyBoost Podrška za povećanje produktivnosti sustava uz dodatnu ReadyBoost tehnologiju.
Superfetch SysMain Superfetch Podržava i poboljšava produktivnost sustava.
Windows Audio Audiosrv Kuriranje uz pomoć robota sa zvukom za Windows. Iako je ova usluga ozvučena, audio oprema i efekti neće biti ispravno obrađeni.
Prostor za Windows karticu idsvc Bezpechuu nadíynu mozhlivíst stvennija, cheruvannya i rozkrittya digitalni svídchen.
Automatsko ažuriranje WUAUSERV Uključite opciju i instalirajte Windows Update. Ako je usluga onemogućena, na kojem računalu je nemoguće osvojiti sposobnost automatsko ažuriranje ili web-mjesto Windows Update.
Uklanjanje tjednih procedura (RPC) RpcSs Provjerite jesu li krajnje točke i druge RPC usluge postavljene.

Popis usluga koje su kreirali Microsoftovi programi

Primijenite usluge stvorene programima i programima drugih vrsta

Im'ya, što vidjeti im'ya usluga Funkcije Opis
ESET HTTP poslužitelj EhttpSrv antivirusni zakhist Komponenta ESET HTTP poslužitelja

Možete li pokrenuti klijentski program kao uslugu? Ne može se program skin console pokrenuti kao usluga, ali programi s grafičkim sučeljem u principu ne mogu tako raditi. Ali svejedno je moguće pokrenuti dodatak kao uslugu i pomoći nam s programom s izvornim nazivom Upravitelj usluga bez sisanja.

NSSM je prava softverska sigurnost sa šifrom koji podržava sve operativne sustave Microsoft počevši od Windowsa 2000 pa do kraja. NSSM ne utječe na instalaciju, dovoljno je da ga nabavite i raspakirate. Distribucija uključuje verzije za 32- i 64-bitne operativne sustave. Program možete preuzeti sa stranice nssm.cc, na Narazi Preostala stabilna verzija je 2.21.1, pa ću se javiti.

Kako bismo demonstrirali snagu NSSM-a, pokušajmo pokrenuti Notepad kao uslugu na .

Stvaranje usluge

Za stvaranje usluge za njih notes pokrećemo naredbenu konzolu, idemo u mapu s NSSM raspakiranjem (za 64-bitni Windows) i upisujemo naredbu nssm install notepad, koja će otvoriti prozor grafičkog NSSM instalacijskog programa. Da biste stvorili uslugu, jednostavno unesite put do datoteke u polje Put i kliknite gumb "Instaliraj uslugu". Dodatkovo u polje Opcije možete unijeti ključeve potrebne za pokretanje usluge.

Također, u fazi stvaranja nove usluge, možete dodijeliti dodatne parametre.

Na kartici "Isključivanje" iskupljuju se metode zvonjenja i timeouta, jer se popravljaju tijekom normalnog završetka posla ili hitnog zvonjenja programa. Ako NSSM onemogući zvučnu naredbu (na primjer, kada je program robota dovršen), aktivira se zvuk kontrole dodataka po činu osoblja. Ako program ne radi, tada NSSM može dovršiti sve procese i podprocese programa.

Usogo ê chotiri faze završetka robotskog programa, a za pranje smrada vikorista, ovim redoslijedom:

U prvoj fazi NSSM-a moguće je generirati i ispraviti ctrl+c. Ovaj način je dobra praksa za konzolne dodatke ili skripte, ali ne zastosovuetsya za grafički dodaci;
Tada NSSM prepoznaje sve prozore koje je kreirao program i poništava WM_CLOSE, što pokreće izlaz iz programa;
Treća faza NSSM-a nabraja sve tokove koje je kreirao program i nadjačava ga WM_QUIT, kao da će biti uklonjena, kao da program može pozvati nit;
Kao NSSM zahtjev za odmor, možete pozvati metodu TerminateProcess(), primus-dovršavajući rad programa.

Moguće je uključiti neke ili sve metode, međutim, za različite programe preporuča se korištenje različitih metoda za ispravno dovršavanje robotskih programa.

Za abdest, NSSM usluga je prisiljena ponovno pokrenuti njen. Na kartici "Izlazne radnje" možete promijeniti automatsko vrijeme nenormalnog završetka programa, kao i postaviti odgodu prije automatskog ponovnog pokretanja programa.

Na kartici "Input/Output (I/O)" možete postaviti preusmjeravanje ulaza/izlaza programa iz uputa za datoteku.

Na kartici "Okruženje" možete instalirati nove promjene izoštravanja ili ga ponovno mapirati.

Također, ne možete koristiti grafičku ljusku i odmah kreirati uslugu u konzoli sa sljedećom naredbom:

nssm instalirajte notepad C:\Windows\system32\notepad.exe

Upravljanje uslugama

Nakon kreiranja usluge uz pomoć NSSM-a, idemo na dodatak za usluge i upoznat ćemo uslugu notepad. Zapravo, čini se da ne ometa druge usluge, također možemo pokrenuti, pokrenuti ili promijeniti način pokretanja. Međutim, imajte na umu da je nssm.exe označen kao datoteka za preuzimanje.

A ako odemo na Upravitelj zadataka, vidjet ćemo sljedeću sliku: dok je glavni (batkivsky) proces NSSM pokrenut, usluga bilježnice radi kao drugi podređeni proces, a dodatak Notepad radi u drugom podređenom postupak.

Daljinski servis

Da biste uklonili uslugu, unesite naredbu nssm remove notepad i potvrdite da je uklonjena. A unosom naredbe nssm remove notepad confirm možete učiniti bez potvrde.

Pokretanje usluge u interaktivnom načinu rada

Glavna funkcija programa coristuvacha u polju usluge je da se nakon pokretanja programa može koristiti za nastavak rada dodatka sa strane coristuvacha - na primjer, pritisnite gumb ili unesite naredbu . Kome je potrebno pristupiti novom, što, kako se čini, nije tako lako dobiti.

Da biste pokrenuli uslugu u interaktivnom načinu rada, trebate označiti potvrdni okvir "Dopusti interakciju s radnim stolom" na kartici "Ulazak u sustav" u alatu Usluge.

A zatim pokrenite diva Za uslugu koja radi u interaktivnom načinu, sustav postavlja ograničenje izolacije sesije (sesija 0). Više vremena u cijeloj sesiji možete provesti uz pomoć usluge detekcije interaktivnih usluga (ui0detect), koja označava pokretanje interaktivnih usluga na računalu i tu vrstu obavijesti. U Windows 7\Server 2008 ova usluga je omogućena iza brave, dok je u Windows 8\Server 2012 onemogućena i ne pojavljuje se u grafičkoj opremi Servisa (tamo ne znam). Više od toga, ako još poznajete tajnu službu i pokušate je pokrenuti, onda oduzmite podatke o pomilovanju.

S desne strane, kako bi pokretanju bilo omogućeno pokretanje interaktivnih usluga na računalu. Stoga je uređivač registra poznat, u odjeljku HKLM\System\CurrentControlSet\Control\Windows, parametar DWORD s imenima Nema interaktivnih usluga i postavite njegovu vrijednost na 0 .

Nakon čega se prikazuje PowerShell konzola, servis se pokreće naredbom:

Start-Service -Naziv ui0detect

Nakon što provjerite radi li usluga prikaza, ponovno pokrenite uslugu bilježnice i na kraju skinite os. Odabiremo stavku "Pogledaj obavijest"

i konzumira u nultoj sesiji, u kojoj radi naš program. Dali s njim robimo potrebne korake i vratimo se natrag.

To je os rješenja za pokretanje programa u obliku Windows servisa. Nije najljepša, ali samo s istim imenom


Usluga Windows NT (Windows NT usluga) je poseban proces koji može objediniti sučelje za sučelje s operacijskim sustavom Windows NT. Usluge su podijeljene u dvije vrste - Win32 usluge, koje komuniciraju s operativnim sustavom uz pomoć Service Control Managera (SCM) i upravljački program koji radi iza protokola upravljačkog programa Windows dodaci NT. Više o Win32 uslugama raspravljat ćemo u ovom članku.

Odugovlačenje usluge

Jedna od najvažnijih ovlasti usluge je neinteraktivnost. Tipična usluga - nije potrebna za velika koristuvač rad u pozadinski način rada. Zbog prirode usluge najprikladniji je za implementaciju sljedećih vrsta dodataka:

  • Poslužitelji u arhitekturi klijent-poslužitelj (na primjer, MS SQL, MS Exchange Server)
  • Windows NT usluge (poslužitelj, radna stanica);
  • Poslužiteljske (u smislu funkcionalnosti) komponente zasebnih programa (na primjer, svi programi za praćenje).

Glavna tijela službi

U tipičnom Win32 programu, uslugu kontroliraju tri glavna tijela. Pogledajmo ih.

Prvo, izvedivost ispravnog zaustavljanja (obustave) robotske usluge. Coristuvach ili neki drugi dodatak, koji osvaja standardne mehanizme, možda može promijeniti stanicu usluge - prevesti í̈í zí stanu vykonannya stan pauzi ili navit zupinitiíí̈ na robota. Kad služim prije promjene svog života, posebno ću obratiti pozornost za koga mogu izvršiti neophodan prijelaz u novo stanje, na primjer, za posuđivanje sredstava.

Na drugi način, mogućnost pokretanja usluge prije registracije korista je, kao rezultat, mogućnost rada bez registriranog koristuvača. U svakom slučaju, usluga se može pokrenuti automatski na početku operativnog sustava i pustiti robota da radi čak i prije nego što se možete prijaviti na sustav.

Í, nareshti, mogućnost rada u dovoljnom ne-peck kontekstu. Sigurnosni kontekst Windows NT određuje skup prava pristupa za proces različitim objektima i podacima sustava. U pogledu programa Win32, koji uvijek radi u kontekstu sigurnosti koristuvacha, trenutno registrirane u sustavu, za uslugu, kontekst sigurnosti može se dodijeliti sljedećem koraku. Tse znači da za uslugu možete dodijeliti skup prava pristupa objektima sustava iza udaljenosti i istovremeno zaokružiti sferu njezine aktivnosti. Stotinjak usluga koristi posebnu vrstu sigurnosnog konteksta, koja se naziva Lokalni sustav. Usluga koja se izvodi u ovom kontekstu nema prava na resurse lokalnog računala. Nijedna od spojenih operacija ne može se koristiti s dopuštenjima lokalnog sustava, ali kontekst može biti osjetljiv na lokalno računalo a ne prepoznaju ga druga računala mezhí.

Interakcija usluge s drugim programima

Bilo da se radi o programu, ako imate bilo kakva prava, možete komunicirati sa svojom uslugom. Vzaêmodíya, u pershu cherga, prenosi promjenu na stanicu usluge, koja će se prenijeti na jednu od tri stanice - pratsyuche (Početak), pauza (Pauza), zapinennya (Pauza), da je zupinka za dodatnu opskrbu SCM. Tražite tri vrste - obavijest o vrstama usluga (fiksiranje njihovih postaja), zahtjev za promjenu konfiguracije usluge ili za uklanjanje informacija o njoj, te traženje programa za promjenu usluge.

Da biste upravljali uslugom, prvo morate držati ručku za pomoćnu funkciju Win32 API OpenService. Funkcija StartService pokreće uslugu. Ako trebate promijeniti uslugu, od vas će se tražiti da kliknete na funkciju ControlService.

Baza usluga

Informacije o servisu kože pohranjene su u registru - pod ključem HKLM\SYSTEM\CurrentControlSet\Services\ServiceName. Postoje takve vídomosti:

  • Vrsta usluge. Vkazuê na one koji su implementirani u dodatku tsmu samo jednu uslugu (isključivo) ili ih u dodatku kílka. Ekskluzivna usluga može se primijeniti u bilo kojem kontekstu sigurnosti. Dekílka usluge u sredini jednog programa mogu raditi samo u kontekstu LocalSystem-a.
  • tip pokretanja. Automatski - usluga počinje pri pokretanju sustava. Na vimogu - servis se pokreće ručno pomoću koristuvača. Deaktivirano - usluga se ne može pokrenuti.
  • Naziv modula koji se ikonizira (EXE datoteka).
  • Započnite narudžbu na druge usluge. U nekim slučajevima, da bi ispravna usluga funkcionirala, potrebno je pokrenuti jednu ili više drugih usluga. Želite li da registar dohvaća informacije o uslugama koje su pokrenute prije toga.
  • Sigurnosni kontekst usluge (spremam tu lozinku). Iza promocije, sigurnosni kontekst je postavljen na LocalSystem.

Programi koji trebaju ukloniti informacije o usluzi ili promijeniti taj ili neki drugi parametar usluge u biti su odgovorni za promjenu informacija u bazi podataka usluge u registru. Možete zatražiti pomoć s drugim Win32 API funkcijama:

  • OpenSCManager, CreateService, OpenService, CloseServiceHandle - za zatvaranje (otvaranje) servisa;
  • QueryServiceConfig, QueryServiceObjectSecurity, EnumDependentServices, EnumServicesStatus - za dohvaćanje informacija o usluzi;
  • ChangeServiceConfig, SetServiceObjectSecurity, LockServiceDatabase, UnlockServiceDatabase, QueryServiceLockStatus - promjena informacija o konfiguraciji usluge.

Unutarnji prilog.

Da bi, dodatak je kriv što je na vlasti s višim rangom, a sam - uključujući jednostavan skup funkcija (u smislu C ++) s jednostavnom funkcionalnošću. Pogledajmo ukratko kožu.

glavna funkcija

Očigledno, glavna funkcija je ulazna točka u bilo koji Win32 konzolni program. Kada se usluga pokrene, kod za funkciju će biti unaprijed fiksiran. 30 sekundi nakon pokretanja, glavna funkcija je odgovorna za pozivanje jezika StartServiceCtrlDispatcher za uspostavljanje veze između SCM programa. Usí komuníkatsíí̈ mízh be-kakvu uslugu kakav dodatak Taj SCM je instaliran u sredini funkcije StartServiceCtrlDispatcher, jer završava rad nakon pokretanja svih usluga u programu.

ServiceMain funkcija

Ulazna točka Krim zagalnoprotsesnoy također je točka ulaska u usluge kože, implementirane u dodatku. Imena funkcija koje služe kao ulazne točke usluge (radi jednostavnosti, sve ćemo ih nazvati ServiceMain) prosljeđuju se SCM-u u jednom parametru po satu pozivu StartServiceCtrlDispatcher. Kada pokrenete servis kože za ServiceMain viscon, stvara se mlaz vode.

Otrimavshi keruvannya, ServiceMain najprije za sve može registrirati uzorak zahtjeva prije usluge, funkciju Handler, vlastitu za uslugu kože kao dodatak. Nakon ovog ServiceMain-a, oglasite sljedeće za inicijalizaciju usluge - pogledajte memoriju, ponovno pročitajte podatke. Usluga je još uvijek u procesu pokretanja i nije bilo svakodnevnih kvarova. Obavijesti služe za dodatnu pomoć funkcije SetServiceStatus. Svi tjedni, osim posljednjeg, pripadaju parametru SERVICE_START_PENDING, a ostali - parametru SERVICE_RUNNING. Periodičnost poziva određuje davatelj usluge, što se čini da dolazi iz uma: vremensko razdoblje između dva sudska poziva SetServiceStatus nije odgovorno za nadjačavanje vrijednosti parametra dwWaitHint proslijeđenog SCM-u tijekom prva dva poziva. A ako ne, onda SCM, bez skidanja podsjetnika chergov u sat, počinje uslugu s primus primus. Ovaj način omogućuje da situacija s servisom nestane na početku nakon pojave tihih ili drugih kvarova (pogodite da usluga ne zvuči interaktivno i da se može pokrenuti bez pada). Zvichayna praksa u tome da se, nakon završetka prvog nacrta inicijalizacije, SCM treba nadograditi.

Funkcija rukovatelja

Kao što sam pretpostavio više, Handler je prototip funkcije povratnog poziva, zahtjeva za zahtjevom prije usluge, vlastite usluge kože za dodatak. Rukovalac se poziva kada je potrebno zatražiti uslugu (pokretanje, obustavljanje, ažuriranje, pokretanje, upozorenje Postat ću in-line) da vykonuê nebhídní vídpovídno prije zapí díí̈, nakon čega novídomlyaê novi kamp SCM.

Posebno je značajan jedan zahtjev - zahtjev koji treba zaprimiti nakon završetka robotskog sustava (Shutdown). Tsey će tražiti signal o potrebi deinicijalizacije vikonta i da će ona biti dovršena. Microsoft navodi da je potrebno 20 sekundi za dovršetak skin servisa, nakon čega počinje zvučati kao primus. Prosvjednici su pokazali da je Umov um pobjednički i služenje primus peći traje do kraja tog sata.

Sigurnosni sustav servisa

Be-yaka diya nad uslugama zahtijevat će dodatna prava iz dodatka. Svi programi imaju pravo zaključati SCM, oživjeti usluge i ponovno provjeriti blokiranje baze podataka usluge. Samo programi mogu registrirati novu uslugu u sustavu ili blokirati bazu podataka usluge, jer mogu imati administrativna prava.

Služba kože može imati sigurnosni deskriptor koji opisuje kako može imati pravo na tu drugu operaciju. Za zaključavanje:

  • Sva prava mogu se promijeniti SERVICE_QUERY_CONFIG, SERVICE_QUERY_STATUS, SERVICE_ENUMERATE_DEPENDENTS, SERVICE_INTERROGATE i SERVICE_USER_DEFINED_CONTROL;
  • Koristuvachí, scho za ulazak u grupu Power Users i oblíkovy zapis LocalSystem, dodatno može imati prava SERVICE_START, SERVICE_PAUSE_CONTINUE i SERVICE_STOP;
  • Koristuvachí scho, scho uđite u grupe Administratori i Operatori sustava, može biti desno SERVICE_ALL_ACCESS.

Usluge i interaktivnost

U promotivne svrhe, interaktivne usluge mogu biti ograničene na sigurnosni kontekst LocalSystem. To je zbog osobitosti prikaza na zaslonu monitora u sustavu Windows NT, na primjer, takvog objekta kao što je "Desktop" oblíkovogo zapis, Prikaži Lokalni sustav. Nezvazhayuchi za one scho u perevazhníy bílshostí vipadkív tse obmezhennya Je nesuttêvim, ali ínodí ísnuê neobhídníst stvoriti uslugu yak vivodila b ínformatsíyu na Screen monitora i na tsomu vikonuvalasya na zaslonu monitora i na tsomu vikonuvalasya na zaslonu monitora i na tsomu vikonuvalasya koji se koristi u programu za pokretanje računala, napridínom poslužitelju, na prikladnom programu koji se koristi u programskom kontekstu.

Isječak koda. Ilustriram takvu mogućnost.

Za ovaj fragment morate zatražiti zahtjev, dodati dio programa u RPC, usluga prikazuje tekstualne obavijesti na zaslonu monitora.

Usluga zadnjice (ključni fragmenti)

Pogledajmo ključne fragmente izvješća mog Z ++, implementirajući Windows NT uslugu. Radi točnosti, dijelovi koda su izostavljeni.

glavna funkcija

U indikacijama, šifra glavne funkcije.

ServiceMain funkcija

Posebno su kodovi koji se postavljaju u ServiceMain oni kojima je često nemoguće odgoditi odgodu sljedeće operacije, pogotovo ako je pogrešno da se greška javlja u operacijskom sustavu zbog bogatog zadatka. Ako je operacija dugotrajnija nego ako parametar SetServiceStatus call-interval ima interval od sat vremena, usluga ne može odmah poslati nadolazeću obavijest, nakon čega bi SCM trebao pozvati robota. Kundaci potencijalnih operacija mogu se koristiti za pozivanje funkcija robota pri velikim vremenskim prekidima ili jednokratno čitanje velike količine informacija od dovoljnog trošenja. Osim toga, takav pidhid apsolutno ne stagnira tijekom porezne službe, krhotine programa na poreznoj opremi popraćene su velikim pauzama koje su nužne trgovcu.

Kako bi se riješio problem, sve operacije iz međuovisnosti sa SCM-om treba provesti u zdravom loncu, koji ne leži u vodi, a koji su potrebni u fazi inicijalizacije.

Očitavanja imaju algoritam za ispravan početak usluge, što je dodatni tok.

Funkcija rukovatelja

Indikacije imaju kod funkcije Handler i dodatne tokove. Za zahtjeve "Stop" i "Shutdown" pokreće se ispravan algoritam poziva usluge, sličan onom koji se pokreće na početku usluge, s tom razlikom što je parametar SERVICE_START_PENDING zamijenjen parametrom SERVICE_STOP_PENDING u SetserviceStatus, a Parametar SERVICE_RUNNING zamijenjen je parametrom SERVICE_RUNNING.

U idealnom slučaju, za ispijanje "Pause" i "Continue" to je također sljedeći red za osvajanje reda. Dopitlivy chitach može lako provesti jogu, spiralno na ovoj guzi.

Visnovok

Na kraju želim napomenuti da s prijelazom na Windows NT 2000 razvoj servisa nije prepoznao promjenu. Usluge su, kao i do sada, lišene važnog dijela softver na Windows platformi, što trgovcima na malo pruža široko polje djelovanja.


// Funkcija slična MessageBox Win32 API-ju int ServerMessageBox(RPC_BINDING_HANDLE h, LPSTR lpszText, LPSTR lpszTitle, UINT fuStyle) (DWORD dwThreadId; HWINSTA hwinstaSave; HDesk hwinstaSave; HDeskRead Desktoph " and "dwread Desktoph" GetThreadtWincess = GetScreadtWincess); (); hdeskSave = GetThreadDesktop(dwThreadId); // Promijenite sigurnosni kontekst na onom // koji je onaj prije objekata "Window station" i "Desktop" // RpcImpersonateClient(h); hwinstaUser), hdeskUser = OpenDesktop ("Zadano", 0, FALSE, MAXIMUM_ALLOWED); RpcRevertToSelf(); urn 0; ) SetThreadDesktop(hdeskUser); // Prikaži rezultat standardnog tekstualnog okvira = MessageBox(NULL, lpszText, lpszTitle, fuStyle); 'Da // "Prozor station" i "Desktop". SetThreadDesktop(hdeskSave); SetProcessWindowStation(hwinstaSave); CloseDesktop(hdeskUser); CloseWindowStation(hwinstaUser); vrati rezultat; ) void main() (SERVICE_TABLE_ENTRY steTable = ((SERVICENAME, ServiceMain), (NULL) , NULL) ); // Postavite vezu sa SCM-a. Koristite sredinu ovih funkcija // za primanje i slanje zahtjeva. StartServiceCtrlDispatcher(steTable); ) void WINAPI ServiceMain (DWORD dwArgc, LPSTR *psArgv) ( // Odmah registrirajte rukovatelja zahtjeva. hSS = RegisterServiceCtrlHandler(SERVICENAME, ServiceHandler); sStatus.dwCheckPoint = 0; sStatus.dwCheckPoint = 0; sStatus.dwCheckPoint = 0; sStatus.dwCheckPoint = 0; sStatus.dwControlsAccepted_SCUERVCERVSCERVSCERVSCERVSCEPT; dwServiceSpecus .dwServiceType = SERVICE_WIN32_OWN_PROCESS sStatus.dwWaitHint = 0 sStatus.dwWin32ExitCode = NOERROR // za uslugu іnіtsіalіzatsії viklikaєtsya funktsіya InitService () ;, Shcho usluga protsesі іnіtsіalіzatsії u .// za sinhronіzatsії stvoryuєtsya protoka Podiya .// Pіslya tsogo zapuskaєtsya robochem potіk, d la // Sinkronizacija koja // stvara pod.uslugu inicijalizaciju.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); ) // Funkcija za nit koja šalje SCM obavijest na sekundu // o onima u kojima je proces inicijalizacije u tijeku. Funkcija robota // završava kada se vrati hSendStartPending pod. DWORD WINAPI SendStartPending(LPVOID) ( sStatus.dwCheckPoint = 0; sStatus.dwCurrentState = SERVICE_START_PENDING; sStatus.dwWaitHint = 2000; // "Odgođeno" na 1 sekundu. Čak ni za 1 sekundu // nije završila inicijalizacija usluge // u ), nadjačani dwCheckPoint++;if(WaitForSingleObject(hSendStartPending, 1000)!=WAIT_TIMEOUT) prekid; ) sStatus.dwCheckPoint = 0; vrati 0; ) // Funkcija koja inicijalizira uslugu. Čitanje podataka // sjećanje, itd. void InitService() (...) // Funkcija za provjeru koda usluge. DWORD WINAPI ServiceFunc(LPVOID) ( while (true) ( ​​if (!bPause) ( // Ovo je mjesto gdje se treba proslijediti kod, koji će // vikonizirati za cikličke operacije... ) if (WaitForSingleObject(hWork, 1000)!=WAIT_TIMEOUT ) Prekid; ) vrati 0; TRUE, FALSE, NULL), hSendStopThread = CreateThread(NULL, 0, SendStopPending, NULL, 0, & dwThreadId); ) SetEvent(hSendStopPending), CloseHandle(hServiceThread), CloseHandle(hWork); Status usluge(hSS, &sStatus); pauza; slučaj SERVICE_CONTROL_PAUSE: bPauza = istina; sStatus.dwCurrentState = SERVICE_PAUSED; SetServiceStatus(hSS, &sStatus); pauza; slučaj SERVICE_CONTROL_CONTINUE: bPauza=true; sStatus.dwCurrentState = SERVICE_RUNNING; SetServiceStatus(hSS, &sStatus); pauza; slučaj SERVICE_CONTROL_INTERROGATE: SetServiceStatus(hSS, &sStatus); pauza; zadano: SetServiceStatus(hSS, &sStatus); pauza; ) ) // Funkcija niti slična SendStartPending // za dio usluge. DWORD WINAPI SendStopPending(LPVOID) (sStatus.dwCheckPoint = 0; sStatus.dwCurrentState = SERVICE_STOP_PENDING; =WAIT_TIMEOUT) prekid;) sStatus.dwCheckPoint = 0; vrati 0 ;)

Kako pokrenuti program u Windows servisu



Možete li pokrenuti klijentski program kao uslugu? U jednom od članaka opisani su načini stvaranja Windows servisa uobičajenim operativnim sustavima. Međutim, dodatak skin console ne može pokrenuti kao usluga, ali programi s grafičkim sučeljem, u principu, ne mogu tako raditi. Ali svejedno je moguće pokrenuti dodatak kao uslugu i pomoći nam s programom s izvornim nazivom Upravitelj usluga bez sisanja.

NSSM je pravi softver za sigurnost s otvorenim kodom koji podržava sve operativne Microsoftovi sustavi, počevši od Windows 2000 do Windows 8. NSSM ne zahtijeva instalaciju, samo preuzmite i raspakirajte. Distribucija uključuje verzije za 32- i 64-bitne operativne sustave. Program možete preuzeti sa stranice nssm.cc, trenutno je preostala stabilna verzija 2.21.1, tako da ću pobijediti.
Kako bismo demonstrirali snagu NSSM-a, pokušajmo pokrenuti Windows Notepad kao uslugu Windows 8.1.

Stvaranje usluge

Za stvaranje usluge za njih notes pokrećemo naredbenu konzolu, idemo u mapu s raspakiranjem NSSM-a (za 64-bitni Windows) i unosimo naredbu

Kod:

nssm instalirajte bilježnicu

kao prozor NSSM grafičkog instalacijskog programa. Da biste stvorili uslugu, jednostavno unesite put do datoteke u polje Put i kliknite gumb "Instaliraj uslugu". Dodatno, u polje Opcije možete unijeti ključeve koji su potrebni za pokretanje usluge.

Također, u fazi stvaranja nove usluge, možete dodijeliti dodatne parametre.

Na kartici Shutdown koriste se metode zvonjenja i time-outa, jer se popravljaju tijekom normalnog završetka posla ili hitnog poziva programa. Ako NSSM onemogući zvučnu naredbu (na primjer, kada je program robota dovršen), aktivira se zvuk kontrole dodavanja po činu osoblja. Ako program ne radi, tada NSSM može dovršiti sve procese i podprocese programa.

Usogo ê chotiri faze završetka robotskog programa, a za pranje smrada vikorista, ovim redoslijedom:

U prvoj fazi, NSSM pokušava generirati i poslati naredbu Ctrl+C. Ovaj način je dobar za konzolne dodatke ili skripte, ali ne i za grafičke dodatke;
Tada NSSM prepoznaje sve prozore koje je kreirao program i poništava WM_CLOSE, što pokreće izlaz iz programa;
Treća faza NSSM-a nabraja sve tokove koje je kreirao program i nadjačava ga WM_QUIT, kao da će biti uklonjena, kao da program može pozvati nit;
Kao NSSM zahtjev za odmor, možete pozvati metodu TerminateProcess(), primus-dovršavajući rad programa.

Moguće je uključiti neke ili sve metode, međutim, za različite programe preporuča se korištenje različitih metoda za ispravno dovršavanje robotskih programa.

Za abdest, NSSM usluga je prisiljena ponovno pokrenuti njen. Na kartici Izlazne radnje možete promijeniti automatsku radnju u slučaju neuobičajenog završetka programa robota, kao i postaviti odgodu prije automatskog ponovnog pokretanja programa.

Na kartici “Input/Output (I/O)” možete postaviti preusmjeravanje na ulaz/izlaz programa iz uputa za datoteku.

Na kartici "Okruženje" možete instalirati nove promjene za uslugu ili je u skladu s tim ponovno mapirati.

Također, ne možete koristiti grafičku ljusku i odmah kreirati uslugu u konzoli sa sljedećom naredbom:

Kod:

nssm install notepad "C:\Windows\system32\notepad.exe"

Upravljanje uslugama

Nakon kreiranja usluge uz pomoć NSSM-a, idemo na dodatak za usluge i upoznat ćemo uslugu notepad. Zapravo, čini se da ne ometa druge usluge, također možemo pokrenuti, pokrenuti ili promijeniti način pokretanja. Međutim, imajte na umu da je nssm.exe označen kao datoteka za preuzimanje.

A ako odemo na Upravitelj zadataka, vidjet ćemo sljedeću sliku: dok je glavni (batkivsky) proces NSSM pokrenut, usluga bilježnice radi kao drugi podređeni proces, a dodatak Notepad radi u drugom podređenom postupak.

Pogledom na softverski sustav. Zbog toga je sasvim prirodno da se okrenemo raspravi o uslugama u kontekstu Windowsa 7. Razgovarajmo po drugi put o načinima na koje se optimizira usluga dostupnih u sustavu Windows 7. Ovaj članak je dodijeljen novom Značajke sustava Windows 7 – Pokreni usluge pokretanja. Prije svega, idemo dolje na API, nazovimo to velikom slikom usluga.

Što je usluga?

Servis - ce unutarnji mehanizam, vbudovaniya u operacijskoj sali Windows sustav. Možete koristiti usluge s posebnim programima koji rade neovisno o kontekstu strujanja jezgre. Usluge se aktiviraju u obliku posebnih programa koji se mogu konfigurirati da rade od trenutka uključivanja (zarobljenog) sustava pa do gašenja, bez obzira na prisutnost koristuvače. Tobto usluge mogu pratsyuvati, navit akscho koristuvach ne vykonav vkhíd u sustav.

Važno nam je bolje pokrenuti usluge pokretanjem zadataka koji se izvode u pozadini i ne ometaju operacije sigurnosnog kopiranja. Windows usluge su odgovorne za sve vrste pozadinskih aktivnosti, počevši od udaljenog poziva procedure (RPC), Printer Spooler-a pa do svijesti o mrežnoj lokaciji.

Uz pomoć bogatstva Windowsa, broj usluga je rastao, a svojedobno se povećavao i broj usluga. Budimo iskreni, pozadinske usluge sustava Windows vrlo su bolne - operacijski sustav Narudžba se isporučuje bez usluga. Osim toga, neovisni dobavljači softvera (ISV) i ti programi pružaju još više usluga. Na primjer, usluge ažuriranja softvera. Istodobno, službenici službe su kritično važni i nužni u procesu regrutacije, u tom času, jer postoji potreba za drugim krivcima, ako sing koristuvač ne uspije ući u sustav, a drugi ne zahtijevaju pokretanje do zovu se. Bez obzira na sve, ako pogledate popis trenutno pokrenutih usluga, potražite anonimne objekte, jer nema potrebe raditi na shemi 24x7.

Što fali servisima, što rade 24 godine za doba 7 dana na dan?

Postoji nekoliko problema povezanih s uslugama koje rade na shemi 24x7. Prije svega, sada možete vježbati (pritisnuti pozadinski način rada), zašto ga ne koristite na nov način? Ako bilo koji proces pokretanja (uključujući usluge) koristi skupu memoriju i CPU resurse, može se koristiti za druge servisne programe. Dok obnavljate sve usluge koje su pokrenute u isto vrijeme, smrad se nakuplja u memoriji, ručkama, streamovima i korištenju CPU-a. Svi ovi "vitratni" resursi smanjuju ukupnu produktivnost računala, a kako bi se nosili sa štetom, računalo je slabo i moćno. Prije toga su krhotine dosta servisa postavljene za automatski start (popravak na startu sustava sat vremena), smrde sat vremena kad je računalo zauzeto.

Na drugi način, potrošnja resursa izravno je naznačena uštedom električne energije. Chim više taštine na CPU, računalo štedi više energije. To može biti važno za prijenosna računala i može proći sat vremena rada s baterijama nekoliko godina.

Treće, naknadni rad neproduktivnog softvera može se dovesti u memoriju i potpuna nestabilnost sustava. Tse vede prije pada u robotskim programima, nareshti, kompjuter.

Nareshti, kao da usluga radi za shemu 24x7, i kao da je usluga dobra kod kuće (kao što se može pojaviti u popularnim programima kože - na primjer, u PDF Reader), što stvara veliku površinu za napad. Uljez može dobiti informacije o tome da je program vrlo popularan, instalirati servis koji radi u 24x7 modu i pokušati hakirati kako bi zabranio pristup računalu.

Vrakhovuchi sve gore navedeno, možete se zapitati zašto ima toliko trgovaca koji bi svoju uslugu napravili za stalni posao, kao da je smrad možda još jedna prilika. Do Windows 7 bilo je dostupno nekoliko opcija za pokretanje usluga:

  • Onemogućeno (Vimkneno) ponovno omogućite uslugu i spriječite pokretanje i pokretanje pratećih usluga - to znači da je koristuvač kriv za ručno uključivanje usluge s ploče za isključivanje ili naredbenog retka
  • Priručnik pokrenite potrošačku uslugu (za povezivanje s ovisnostima drugih usluga) ili kada pozivate uslugu s programom za dodatne API-je, kao što je prikazano u nastavku
  • Automatski pokrenite uslugu pri prijavi
  • Automatsko odgođeno- novi tip pokretanja, koji se pojavio u sustavu Windows Vista, uz pomoć kojeg se servis pokreće nakon završetka pokretanja tih prvih operacija, što će ubrzati pokretanje sustava.

Nažalost, mnogi ISV-ovi (uključujući i sam Microsoft) nastavljaju postavljati svoje usluge na Automatsko (Automatsko) ili Automatsko odgođeno pokretanje (Automatsko odgođeno), što je primjer za sva najjednostavnija rješenja. Usluga jednostavno radi 24x7 i uvijek je dostupna, ako je potrebno, ponovna provjera depozita ili usluga radi.

Moguće je postaviti anonimne aplikacije bitnih usluga, što može dovesti do znatno manje resursa i postati sigurnije, ne radeći u 24x7 modu. Na primjer, razmislite o usluzi ažuriranja, kao o načinu provjere prisutnosti novih ažuriranja za program. Ako se računalo ne povezuje na merežhí, nema IP adresu, zašto bi onda radilo? Ako ne možete ništa učiniti, onda biste sada trebali oduzeti radni program, pa nemojte ništa raditi? Razmislite o službi upravljanja političarima, kako pobijediti u času promjene grupne politike ili ako je računalo spojeno na domenu, ili ako je računalo povezano s mojim domom, usluga je još uvijek izvediva.

Izgled usluga pokretanjem na okidaču

Virishennya vyschevkazanyh problema polygaê na videnní usluga zí stan stalan rad» Druge vrste pozadinskih aktivnosti, kao što su zakazani poslovi ili usluge koje pokreće okidač. Ovaj se članak odnosi na Windows 7 Trigger Start Services. O planiranim zadacima u sustavu Windows 7 možete reći puno stvari, što će biti razbijeno u nadolazećim člancima.

Pisači