2012-05-02 10 views
5

Mam prosty projekt usługi systemu Windows. Postępowałem zgodnie z instrukcjami pod numerem http://msdn.microsoft.com/en-us/library/zt39148a.aspx, w tym dodając działania niestandardowe.Usługa systemu Windows w Task Scheduler - usługa nie może zostać uruchomiona. Proces usługi nie mógł połączyć się z kontrolerem usługi.

Po uruchomieniu mojej kompilacji w trybie Release dla projektu instalacji. Uruchomę .msi na serwerze, na którym chciałbym aby usługa działała. Kiedy otwieram Menedżera usług, pojawia się usługa. Mogę nawet ręcznie uruchomić usługę i działa dokładnie tak, jak tego potrzebuję.

Jednak chciałbym, aby ta usługa była uruchamiana co 5 minut, więc skonfigurowałem zadanie w Harmonogramie zadań i skierowałem do tego zadania .exe mojej usługi Windows. Jednak, gdy program do planowania zadań uruchamia moją usługę Windows, pojawia się następujący błąd:

Usługa nie może zostać uruchomiona. Proces serwisowy nie mógł połączyć się z kontrolerem usługi Zrobiłem wiele badań na ten temat, ale nic nie wymyśliłem. Czy ktoś ma jakieś pomysły na temat tego, co może być przyczyną tego?

+0

Co dokładnie umieszczasz w Harmonogramie zadań, aby uruchomić usługę? – CoreTech

+0

Na karcie Ogólne klikam "Uruchom, czy użytkownik jest zalogowany", a następnie zaznacz pole "Nie przechowuj hasła". Na karcie wyzwalaczy ustawiam uruchamianie co 5 minut. Na karcie działań mam Uruchomiony wybrany program i wskazuję go bezpośrednio na mój plik .exe – vcuankit

+0

Ponieważ już zakończyłeś i uruchomiłeś swoją usługę, nie zrobiłbyś tego. czy lepiej korzystać z licznika w swojej usłudze niż z TaskScheduler? Można nawet ustawić wartość rejestru, którą można odczytać i wykorzystać jako interwał, który można zmieniać dynamicznie. Jeśli jest jakiś żądany dziennik, możesz go dodać do przeglądarki zdarzeń. –

Odpowiedz

2

OK, to nie zadziała. Nie możesz uruchamiać swojego exe bezpośrednio z Task Scheduler. Powinieneś use the "Net start" command, aby rozpocząć usługę.

Pamiętaj, aby zaznaczyć pole "Uruchom z najwyższymi uprawnieniami" w zaplanowanym zadaniu, aby uniknąć kontroli konta użytkownika w systemie Windows Vista lub nowszym.

+0

Dziękuję za odpowiedź, CoreTech. Czy mógłbyś trochę rozwinąć? Gdzie powinienem umieścić polecenie NET START w harmonogramie zadań? Czy powinienem po prostu uruchomić usługę, a jeśli po prostu uruchomię usługę, co powinienem umieścić w zakładce Akcje? – vcuankit

+0

Na karcie Akcje dodaj nową akcję do "Uruchom program" i wpisz "net start [nazwa-usługi-użytkownika]" w polu "Program/skrypt". – CoreTech

+0

Kiedy to robię, daje mi ostrzeżenie z pytaniem, czy używam parametrów. Klikam na NIE i próbuję go uruchomić. Wynik ostatniego uruchomienia mówi "System nie może znaleźć określonego pliku". – vcuankit

1

Moja odpowiedź nie została poprawnie sformatowana w komentarzach, więc chciałem poinformować wszystkich, jeśli natknęli się na to. Zasadniczo, po prostu stworzył .bat plik, a następnie w tym pliku .bat, umieścić następujące dwa wiersze:

NET START MyServiceName
NET STOP MyServiceName

Polecenie net stop jest synchroniczna i będzie czekać na usługa do wykonania przed zatrzymaniem usługi.

Dzięki za pomoc!

+0

Usługi systemu Windows są zwykle zaprojektowane tak, aby działały cały czas.Jeśli chcesz coś uruchamiać co 5 minut, napisz starą, starszą aplikację konsolową i korzystaj z harmonogramu zadań, aby uruchamiać go co 5 minut, lub napisz usługę, która działa przez cały czas i używa zegara lub instrukcji sleep, aby się obudzić co 5 minut . uruchamianie usługi co 5 minut w celu wykonania określonego zadania, a następnie zatrzymanie go ponownie nie jest dobrym projektem – Andy