Opisi nekih najboljih praksi prilikom stvaranja servisa Windows Services


Sažetak


U ovom se članku opisuju neke česte pogreške koje morate izbjegavati prilikom pisanja servisa. U članku se predlaže i najbolje prakse koje slijedi prilikom stvaranja servisa Microsoft Windows. Windows servis jest program, rutina ili postupak koji izvršava određenu funkciju sustava za podršku drugim programima, osobito pri niskim razinama (uz hardver). Primjeri servisa Windows Services obuhvaćaju poslužiteljske proizvode, kao što su Microsoft Exchange i Microsoft SQL Server i druge klijentske aplikacije, kao što je timer sustava Windows koji postavlja sat računala. Windows Services automatski se pokreće prilikom pokretanja računala i nema korisničkog sučelja.

Dodatne informacije


Sljedeće smjernice mogu biti korisne prilikom pisanja servisa sustava Windows:
  • Dizajnirajte svoj servis za korištenje bez korisničkog sučelja. Servisne aplikacije pokreću se izvan određenog konteksta korisnika i ne treba zahtijevati nikakvu intervenciju korisnika. Te aplikacije obično obavljaju zadatke u pozadini. Dizajnirajte servis da se pokreće bez ikakvih intervencija korisnika.
  • Ne sastavite interaktivne servise. Pokrenite servis kao izolirani servis bez korisničke intervencije. Kada se interaktivni korisnik prijavi u istu instancu servisa Windows Services, mogu se pojaviti napadi poruke u prozoru. Interaktivni korisnik može ubrizgati i pokrenuti proizvoljni kod u postupku interaktivne usluge. Ako interaktivni korisnik pošalje poruku WM_COPYDATA , kopira zlonamjerni kod u adresni prostora vrlo privilegiranog procesa interaktivne usluge, a zatim šalje WM_TIMER poruku, postupak servisa pokreće zlonamjerni kod. Ovaj porast povlastica napada može izvršiti korisnik koji ima fizički pristup računalu ili korisnik koji se prijavljuje na računalo pomoću servisa Microsoft Terminal Services.
  • Uklonite sve naredbe Assert prije otpreme servisa. Microsoft ne preporučuje korištenje metode Assert . Metodom Assert prikazat će se dijaloški okvir s prikazom retka koda koji nije uspjelo, a zatim će vam dati mogućnost ispravljanja pogrešaka kod. Stoga uklonite sve naredbe Assert prije otpreme servisa.
  • Pokrenite servis u određenom sigurnosnom kontekstu. Da biste zaštitili sustav od napada, pokrenite servis s minimalnim korisničkim pravima. Ako vam je potrebna dodatna korisnička prava od onih koje su dodijeljene minimalnim korisničkim računima, nemojte pokrenuti servis kao korisnik s administratorskim vjerodajnicama. Ne mijenjajte ni sigurnosno pravilo da biste podigli korisnička prava za ugrađene prijave (sustav, anonimno prijavljivanje, lokalni servis i mrežni servis). Umjesto toga stvorite prilagođeni račun, a zatim računu dodijelite korisnička prava koja će vam biti potrebna. Ako su vam potrebne mrežne vjerodajnice, upotrijebite račun domene. Ako vam nije potrebna mrežna vjerodajnica, upotrijebite lokalni račun. Možete provesti više vremena stvaranjem prilagođenog računa s ograničenim korisničkim pravima, ali to je sigurnije nego ako pokrenete servis s previše korisničkih prava ili kada dodate korisnička prava na račun koji je uvršten u operacijski sustav.
  • Izbjegavajte korištenje ispisa i mapiranih diskova u sustavu Windows Services. Ispis i mapirani Pogoni obično su dostupni određenom korisniku ili grupi korisnika. Ako koristite ispis ili mapirani pogon, provjerite funkcionira li vaš servis pod računom uz korisnička prava koja moraju imati za pristup ispisu ili mapiranim pogonima. Mapirani Pogoni obično se isključe kada se odjavite, a zatim se ponovno povežete kada se prijavite na računalo.
  • Izbjegavajte oslanjanje na postavke korisničkog profila prilikom pisanja servisa Windows Services.

Reference


Dodatne informacije o servisima Windows Services potražite na sljedećim web-mjestima Microsoftova programerskom mrežom: