2011-10-20 15 views
23

मैं इनो सेटअप का उपयोग कर [Icons] अनुभाग में कमांड प्रॉम्प्ट का उपयोग कर Windows सेवा को पुनरारंभ करना चाहता हूं। कृपया समस्या को हल करने में मेरी मदद करें।कमांड प्रॉम्प्ट का उपयोग कर सेवा को पुनरारंभ कैसे करें?

+0

मैं [इस का उत्तर] (देना नहीं था http://stackoverflow.com/questions/7803337/how-to-run-windows-start-service-using -नोनो-सेटअप/7804288 # 7804288) टिप्पणियों में जब आपने पिछली बार पूछा था? आवश्यक अनुमति देने और सेवा को प्रारंभ/पुनरारंभ करने के लिए मैनिफेस्ट प्रदान करने के लिए एक छोटा रैपर EXE का उपयोग करें। – Deanna

+0

यह प्रश्न ऑफ-विषय है क्योंकि यह पूछ रहा है कि 'मैं कमांड प्रॉम्प्ट में सेवा कैसे पुनरारंभ कर सकता हूं', और यह innosetup के लिए विशिष्ट नहीं है। – cybermonkey

उत्तर

31

आप इसे रोकने के लिए सेवा और sc stop [service] का उपयोग कर सकते हैं। कुछ सेवाओं के साथ net start [service] वही कर रहा है।

लेकिन यदि आप इसे उसी बैच में उपयोग करना चाहते हैं, तो ध्यान रखें कि sc stop सेवा को रोकने के लिए प्रतीक्षा नहीं करेगा। इस मामले में आपको net stop [service] का उपयोग करना होगा, इसके बाद net start [service] होगा। यह तुल्यकालिक निष्पादित किया जाएगा।

+0

एससी स्टार्ट का उपयोग करना + एससी स्टॉप मेरे लिए काम नहीं करता है (प्रारंभ हिस्सा काम नहीं करता है)। हालांकि नेट स्टॉप + नेट स्टार्ट का उपयोग करना काम करता है! –

+1

क्या आपने सेवा नाम के लिए उद्धरण चिह्नों का उपयोग करने का प्रयास किया है? – senyor

+3

'sc' में समस्या है जो प्रारंभ/बंद होने के लिए प्रतीक्षा नहीं करता है, यह केवल सेवा के लिए प्रारंभ/रोक अनुरोध भेजता है - इसलिए आप Foo && sc प्रारंभ नहीं कर सकते हैं, क्योंकि यह विफल रहता है - यह बंद होने से पहले सेवा शुरू करने की कोशिश करता है। 'नेट' यहां उपयोग करने के लिए सही है, क्योंकि यह स्टार्ट/स्टॉप खत्म होने की प्रतीक्षा करता है। –

1

आप SC कमांड का उपयोग कर सेवाओं को शुरू और बंद कर सकते हैं। Innosetup के रूप में मुझे यकीन नहीं है।

22

आप निम्न सामग्री के साथ एक .bat फ़ाइल बना सकते हैं:

net stop "my service name" 
net start "my service name" 
5
net.exe stop "servicename" && net.exe start "servicename" 
+1

क्या सेवा को पुनरारंभ करने के लिए कोई एकल cmd है? – Nithin

+0

मुझे नहीं पता कि – oluies

+0

आप एक स्क्रिप्ट कर सकते हैं जिसमें net.exe stop% 1 && net.exe प्रारंभ% 1 – oluies

4

चल रहे एक सेवा को पुनः आरंभ करने के लिए:

net stop "service name" && net start "service name" 

हालांकि, अगर आप सेवा करता है, तो पता नहीं है पहले स्थान पर चल रहा है और इसे पुनरारंभ करना या शुरू करना चाहता हूं, इसका उपयोग करें:

net stop "service name" & net start "service name" 

यह काम करता है अगर सेवा पहले से चल रही है या नहीं।

संदर्भ के लिए, यहां सशर्त प्रसंस्करण प्रतीकों पर documentation है।

+0

साथ '|| दूसरे संस्करण' बहुत सही नहीं है - अगर सेवा चल रही है, इसे बंद कर दिया जाएगा, आदेश सफल होता है और दूसरा आदेश में सभी को मार डाला नहीं है। एक echo echo कोशिश करें echo b' –

+0

काफी सही, मेरा बुरा। इसे अभी तय कर दिया! –

2

यह मेरा कोड है, SC कमांड का उपयोग कर विंडोज सेवा को शुरू/बंद करने के लिए। अगर सेवा शुरू/बंद करने में विफल रहता है, तो यह एक लॉग जानकारी प्रिंट करेगा। आप इनो सेटअप द्वारा इसे आजमा सकते हैं।

{ start a service } 
Exec(ExpandConstant('{cmd}'), '/C sc start ServiceName', '', 
    SW_HIDE, ewWaitUntilTerminated, ResultCode); 
Log('sc start ServiceName:'+SysErrorMessage(ResultCode)); 
{ stop a service } 
Exec(ExpandConstant('{cmd}'), '/C sc stop ServiceName', '', 
    SW_HIDE, ewWaitUntilTerminated, ResultCode); 
Log('sc stop ServiceName:'+SysErrorMessage(ResultCode)); 
संबंधित मुद्दे