Net, instalarea de servicii de ferestre

Orice serviciu trebuie să fie configurat în registrul de sistem. Toate serviciile sunt localizate în secțiunea HKEY_LOCAL_MACHINE \ System \ CurrentControlSet \ Services. Puteți utiliza utilitarul regedit pentru a vedea intrările din registrul sistemului. Acesta conține informații despre tipul de serviciu, numele său afișat, calea către fișierul executabil, configurația de lansare și așa mai departe. Cifra pentru exemplu arată cum arată configurația serviciului W3SVC în registrul de sistem:







Net, instalarea de servicii de ferestre

O configurație similară poate fi furnizată utilizând clasele de instalare din spațiul de nume System.ServiceProcess.

Pentru a adăuga programul de instalare la serviciu, trebuie să treceți la vizualizarea vizuală a designerului din Visual Studio și să selectați Add Installer din meniul contextual. Ca rezultat, se creează o nouă clasă ProjectInstaller, precum și instanțele clasei ServiceInstaller și ServiceProcessInstaller.

Clasa de instalatori

Clasa ProjectInstaller este moștenită de la System.Configuration.Install.Installer. Această clasă este clasa de bază pentru toți instalatorii speciali. Utilizând clasa Installer, puteți crea proceduri de instalare bazate pe tranzacții. În cazul în care nu se finalizează o astfel de procedură, devine posibilă revenirea la starea anterioară și anularea tuturor modificărilor efectuate după începerea procedurii.

În interiorul constructorului din clasa ProjectInstaller, metoda InitializeComponent () este numită:

Clase ProcessInstaller și ServiceInstaller

În cadrul codului de implementare al InitializeComponent (), sunt create instanțele claselor ServiceProcessInstaller și ServiceInstaller. Ambele clase sunt moștenite de la ComponentInstaller. care, la rândul său, este moștenit de la clasa Instalator.

Clasele moștenite de la ComponentInstaller pot fi utilizate pentru a personaliza procesul de instalare. Nu uitați că procesul de service poate implica lansarea a mai mult de un serviciu. Clasa ServiceProcessInstaller poate fi utilizată pentru a configura un proces care va fi responsabil pentru definirea valorilor pentru toate serviciile care rulează în interiorul procesului și pentru clasa ServiceInstaller pentru configurarea fiecăruia dintre aceste servicii, pentru fiecare serviciu, trebuie utilizată o instanță separată a ServiceInstaller. Dacă există trei servicii care rulează în interiorul procesului, va trebui să adăugați trei instanțe ale ServiceInstaller, respectiv.

Se poate observa că ServiceProcessInstaller instalează un program care implementează clasa ServiceBase. Clasa ServiceProcessInstaller are proprietăți destinate întregului proces. Următoarea este o scurtă descriere a acestor proprietăți, la care se acordă acces la toate serviciile din cadrul procesului:

Specifică, în numele contului de utilizator, că serviciul ar trebui să înceapă atunci când proprietatea Cont este setată la ServiceAccount.User.

Vă permite să specificați tipul de cont de serviciu.

Este o proprietate numai pentru citire care returnează textul de ajutor privind setarea numelui de utilizator și a parolei.

Procesul utilizat pentru a porni serviciul poate fi definit în proprietatea contului din clasa ServiceProcessInstaller utilizând enumerarea ServiceAccount. Mai jos este o scurtă descriere a tuturor valorilor care pot fi setate pentru proprietatea contului.







ServiceInstaller este o clasă pe care toate serviciile o cer. Pentru fiecare serviciu din cadrul procesului, acesta suportă următoarele proprietăți: StartType, DisplayName, ServiceName și ServicesDependedOn. O scurtă descriere a acestor proprietăți este prezentată mai jos:

Setarea acestei valori indică faptul că serviciul trebuie să utilizeze un cont de utilizator foarte privilegiat în sistemul local și să acționeze ca un computer în rețea.

La fel ca LocalService, această valoare indică faptul că acreditările computerului trebuie să fie transmise serverelor la distanță, dar spre deosebire de LocalSystem, acesta presupune că serviciul din sistemul local trebuie să acționeze în numele contului de utilizator neprivilat. După cum se poate ghici cu ușurință după nume, această valoare trebuie aplicată numai acelor servicii care au nevoie de acces la resursele de rețea.

Această valoare indică faptul că orice server de la distanță trebuie să primească acreditări anonime și serviciul trebuie să aibă aceleași privilegii în sistemul local ca și serviciul NetworkService.

Setarea proprietății contului la ServiceAccount.User înseamnă că utilizatorul poate defini contul care ar trebui utilizat în acest serviciu.

Proprietatea StartType specifică dacă serviciul trebuie pornit manual sau automat. Valorile posibile sunt: ​​ServiceStartMode.Automatic, ServiceStartMode.Manual, ServiceStartMode.Disabled. Dacă valoarea ServiceStartMode.Disabled este setată pentru această proprietate, serviciul nu va porni. Această opțiune poate fi utilă pentru serviciile care nu ar trebui să fie difuzate pe sistem. De exemplu, setarea acestei proprietăți la Dezactivat poate fi necesară dacă un controler hardware nu este disponibil.

Dacă proprietatea StartType nu este setată la Automatic, această proprietate este ignorată. Aceasta indică dacă serviciul ar trebui să fie pornit imediat după ce sistemul este pornit, dar puțin mai târziu. Această proprietate a apărut în .NET 4 și este acceptată începând cu Windows Vista.

Această proprietate specifică modul în care ar trebui să pară numele de serviciu ușor de utilizat. Acest nume va fi, de asemenea, afișat în instrumentele care vă permit să gestionați serviciul și să monitorizați performanța acestuia.

Această proprietate specifică modul în care ar trebui să se uite numele serviciului. Valoarea sa trebuie să se potrivească cu valoarea ServiceName din clasa ServiceBase din programul de service. Cu ajutorul acestuia, configurația ServiceInstaller va fi asociată cu programul de service necesar.

Această proprietate specifică ce set de servicii trebuie pornit înainte de începerea serviciului. Datorită acestui lucru, atunci când începe serviciul, serviciile dependente specificate vor începe automat și numai atunci serviciul însuși.

După schimbarea numelui de serviciu din clasa moștenită de la ServiceBase, nu uitați să schimbați valoarea proprietății ServiceName din obiectul ServiceInstaller!

În etapa de testare, este mai bine să setați proprietatea StartType la Manual. Apoi, dacă nu puteți opri serviciul (de exemplu, din cauza existenței unui defect în acesta), sistemul va fi repornit. Dacă funcția StartType este setată la Automat, serviciul va porni automat din nou chiar și după ce sistemul este repornit. După ce vă asigurați că serviciul funcționează corect, valoarea acestei proprietăți poate fi ușor modificată.

Clasa ServiceInstallerDialog

O altă clasă a programului de instalare din spațiul de nume System.ServiceProcess.Design este ServiceInstallerDialog. Puteți utiliza această clasă dacă doriți ca administratorul de sistem să introducă numele de utilizator și parola contului care urmează să fie utilizat în timpul instalării serviciului. Dacă setați proprietatea Contul din clasa ServiceProcessInstaller la ServiceAccount.User și proprietățile Username și Password la null, caseta de dialog Set Service Login va fi afișată pe ecran în timpul procesului de instalare. În această fereastră, puteți anula și procesul de instalare.

Installutil utilitate

După adăugarea claselor de instalare în proiect utilizând utilulul installutil.exe, puteți încerca să instalați și să dezinstalați serviciul. Acest utilitar vă permite să instalați orice ansamblu care are clasa Installer. Pentru a efectua instalarea, aceasta apelează metoda Install () a clasei moștenite de la Installer și pentru a elimina ansamblul instalat anterior, respectiv metoda Deinstall ().

Comenzile pe care le puteți utiliza pentru a instala și dezinstala serviciul exemplu sunt următoarele:

Dacă procesul de instalare nu reușește, verificați jurnalele de instalare ale Installutil.InstallLog și <имя_службы>.InstallLog. Adesea, pot găsi informații utile, cum ar fi mesajul "Serviciul specificat deja există" ("Serviciul specificat există deja").







Articole similare

Trimiteți-le prietenilor: