Postat la
02-Jul-2009
ora
09:56 am
de
[Chetroesu]
Cum se poate face ca un serviciu windows sa porneasca la butarea sistemului doar dupa ce un alt serviciu a pornit in prealabil?
M-am lovit de o astfel de situatie de curand si am gasit o rezolvare destul de simpla. In cazul meu, era vorba de un masina cu dubla destinatie: server web unde rula Apache cu un Tomcat 5.5 si totodata server DB (M$ SQL Server 2000). Problema la repornire era ca serviciul Tomcat pleca inaintea serviciului SQLSERVERAGENT.
Inainte de a vorbi despre modul in care se poate prioritiza pornirea serviciilor in Windows, trebuie mai intai sa cunoastem detaliile acestora. La click dreapta si Properties pe un serviciu din lista de servicii Windows, se deschide o forma de genul celei de mai jos. Important pentru situatia noastra este tab-ul "Dependencies". Aici se vad serviciile de care depinde serviciul curent (poza 1) si in acelasi timp serviciile care depind de serviciul curent (poza 2).
Acestea fiind spuse, toata treaba consta in definirea unei dependinte intre serviciul de Tomcat si cel de SQLSERVERAGENT in asa fel incat primul sa depinda de al doilea. Aceasta se poate face doar prin editarea registrilor sistemului Windows, folosind utilitarul windows de editare registri: regedit. Locatia unde sunt definite detaliile despre serviciile instalate in sistem este:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NUME_SERVICIU]
Pasii de urmat sunt urmatorii:
1. Deschidem aplicatia regedit si ne ducem in locatia specificata mai sus.
2. Identificam serviciul pentru care vrem sa cream dependinta si il selectam cu un click.
3. Din meniul Edit cream o noua proprietate de tip Multi-String Value (REG_MULTI_SZ) si ii dam numele DependOnGroup.
4. Din meniul Edit cream o noua proprietate de tip Multi-String Value (REG_MULTI_SZ) si ii dam numele DependOnService.
5. Dam dubluclick pe proprietatea DependOnService si ii dam valoarea SQLSERVERAGENT apoi apasam Ok. Daca avem mai multe dependinte, pentru fiecare dintre ele cream o linie noua in ecranul de valori
4. Se reporneste serviciul.
That's all folks!