2012-05-02 18 views
5

मेरे पास एक साधारण विंडोज सेवा प्रोजेक्ट है। मैंने कस्टम क्रियाओं को जोड़ने सहित http://msdn.microsoft.com/en-us/library/zt39148a.aspx पर स्थित निर्देशों का पालन किया है।कार्य शेड्यूलर में विंडोज सेवा - सेवा शुरू नहीं की जा सकती है। सेवा प्रक्रिया सेवा नियंत्रक से कनेक्ट नहीं हो सका

सेटअप प्रोजेक्ट के लिए रिलीज़ मोड में मेरा निर्माण चलाते समय। मैं सर्वर पर .msi चलाता हूं, मैं सेवा चलाने के लिए चाहता हूं। जब मैं सेवा प्रबंधक खोलता हूं, तो सेवा प्रकट होती है। मैं मैन्युअल रूप से सेवा भी शुरू कर सकता हूं और यह ठीक उसी तरह चलता है जैसा मुझे इसकी आवश्यकता है।

हालांकि, मैं इस सेवा को हर 5 मिनट चलाने के लिए चाहूंगा, इसलिए मैंने कार्य शेड्यूलर में एक कार्य स्थापित किया और कार्य में मेरी विंडोज सेवा के .exe को इंगित किया। हालांकि, जब कार्य शेड्यूलर मेरी विंडोज़ सेवा चलाता है, तो मुझे निम्न त्रुटि मिलती है:

सेवा शुरू नहीं की जा सकती है। सेवा प्रक्रिया सेवा नियंत्रक

से कनेक्ट नहीं हो सका, मैंने इस पर बहुत सारे शोध किए हैं लेकिन कुछ भी नहीं आया है। क्या किसी के पास कोई विचार है कि इसका क्या कारण हो सकता है?

+0

आपकी सेवा शुरू करने के लिए आप कार्य शेड्यूलर में वास्तव में क्या डाल रहे हैं? – CoreTech

+0

सामान्य टैब में, मैं "चलाता हूं कि उपयोगकर्ता लॉग इन है या नहीं" पर क्लिक करें और फिर उस बॉक्स को चेक करें जो "पासवर्ड स्टोर न करें" कहता है। ट्रिगर टैब में मैंने इसे हर 5 मिनट क्रिया टैब में चलाने के लिए सेट किया है, मैंने एक प्रोग्राम प्रारंभ किया है और इसे सीधे मेरी .exe फ़ाइल – vcuankit

+0

पर इंगित किया है क्योंकि आप पहले ही समाप्त कर चुके हैं और अपनी सेवा शुरू कर चुके हैं, यह बेहतर होगा कि आप टास्कशेड्यूलर की तुलना में अपनी सेवा के भीतर टाइमर का उपयोग करें? आप एक रजिस्ट्री मान भी सेट कर सकते हैं जिसे आप पढ़ सकते हैं और एक अंतराल के रूप में उपयोग कर सकते हैं जिसे गतिशील रूप से बदला जा सकता है। यदि कोई लॉग है जो आप चाहते हैं, तो आप इसे ईवेंट व्यूअर में जोड़ सकते हैं। –

उत्तर

2

ठीक है, यह काम नहीं करेगा। आप टास्क शेड्यूलर से सीधे अपनी सेवा के एक्सई को नहीं चला सकते हैं। सेवा शुरू करने के लिए आपको use the "Net start" command होना चाहिए।

यदि आप Windows Vista या बाद में हैं तो यूएसी से बचने के लिए अपने निर्धारित कार्य में "उच्चतम विशेषाधिकार बॉक्स के साथ चलाएं" को जांचना सुनिश्चित करें।

+0

आपकी प्रतिक्रिया के लिए धन्यवाद, कोरटेक। क्या आप कृपया थोड़ा विस्तार कर सकते हैं? कार्य शेड्यूलर में मुझे नेट स्टार्ट कमांड कहां रखा जाना चाहिए? या मुझे बस सेवा शुरू करनी चाहिए, और यदि मैं अभी सेवा शुरू करता हूं, तो मुझे क्रिया टैब में क्या रखना चाहिए? – vcuankit

+0

क्रिया टैब पर, "प्रोग्राम प्रारंभ करें" पर एक नई कार्रवाई जोड़ें और "प्रोग्राम/स्क्रिप्ट" फ़ील्ड में "नेट स्टार्ट [your-service-name]" दर्ज करें। – CoreTech

+0

जब मैं ऐसा करता हूं, तो यह मुझे चेतावनी देता है कि क्या मैं पैरामीटर का उपयोग कर रहा हूं। मैं उस पर क्लिक करता हूं और इसे चलाने की कोशिश करता हूं। अंतिम रन परिणाम कहता है "सिस्टम निर्दिष्ट फाइल नहीं ढूंढ सकता"। – vcuankit

1

मेरा उत्तर टिप्पणियों में ठीक से प्रारूपित नहीं हुआ था, इसलिए मैं इस घटना में सभी को इस घटना में आने देना चाहता था। असल में, मैं सिर्फ एक .bat फ़ाइल बनाई और फिर उस .bat फ़ाइल के भीतर, मैं निम्नांकित दो पंक्तियों डाल:

नेट स्टार्ट MyServiceName
नेट रोकें MyServiceName

नेट रोकें आदेश तुल्यकालिक है और के लिए इंतजार करेंगे सेवा बंद होने से पहले पूरा करने के लिए सेवा।

सहायता के लिए धन्यवाद!

+0

विंडोज सेवाएं सामान्य रूप से हर समय चलाने के लिए डिज़ाइन की जाती हैं।यदि आप हर 5 मिनट में कुछ चलाना चाहते हैं तो या तो एक सादा पुराना कंसोल एप्लिकेशन लिखें और प्रत्येक 5 मिनट में चलाने के लिए कार्य शेड्यूलर का उपयोग करें, या हर समय चलने वाली एक सेवा लिखें और प्रत्येक 5 मिनट तक जागने के लिए टाइमर या नींद स्टेटमेंट का उपयोग करें । एक विशिष्ट कार्य करने के लिए हर 5 मिनट में एक सेवा शुरू करना और फिर इसे फिर से रोकना वास्तव में एक अच्छा डिज़ाइन नहीं है – Andy

संबंधित मुद्दे