निष्पादन योग्य से विंडोज सेवा बनाएं


349

क्या कोई त्वरित तरीका है, एक निष्पादन योग्य फ़ाइल दी गई है, एक विंडोज सेवा बनाएं जो शुरू होने पर इसे लॉन्च करता है?


8
यहाँ है कि यह कैसे प्राप्त करने के बारे माइक्रोसॉफ्ट के निर्देश है।
PiRX

जवाबों:


460

एक निष्पादन योग्य से विंडोज सेवा बनाने के लिए, आप इसका उपयोग कर सकते हैं sc.exe:

sc.exe create <new_service_name> binPath= "<path_to_the_service_executable>"

आपके पास वास्तविक exeपथ के आसपास उद्धरण चिह्न और इसके बाद का स्थान होना चाहिए binPath=

scआदेश पर अधिक जानकारी Microsoft KB251192 में पाई जा सकती है

ध्यान दें कि यह सिर्फ किसी भी निष्पादन योग्य के लिए काम नहीं करेगा: निष्पादन योग्य एक विंडोज सर्विस ( यानी सेवामाइन लागू करें ) होना चाहिए । सेवा के रूप में एक गैर-सेवा निष्पादन योग्य को पंजीकृत करते समय, आपको सेवा शुरू करने की कोशिश में निम्नलिखित त्रुटि मिलेगी:

त्रुटि 1053: सेवा ने समय पर फैशन में शुरू या नियंत्रण अनुरोध का जवाब नहीं दिया।

ऐसे उपकरण हैं जो मनमाने ढंग से, गैर-सेवा निष्पादनयोग्य से विंडोज सेवा बना सकते हैं, ऐसे उपकरणों के उदाहरणों के लिए अन्य उत्तर देखें।


11
आपको (लगभग निश्चित रूप से) इस कमांड को काम करने के लिए प्रशासक के रूप में कमांड प्रॉम्प्ट चलाना होगा
Jeutnarg

2
पथ को भी पूरी तरह से योग्य पथ होने की आवश्यकता है - मैं एक रिश्तेदार पथ का उपयोग करके शुरू करने के लिए अपनी सेवा प्राप्त नहीं कर सका।
RunOfTheShipe

4
binpath=डबल कोट्स के साथ निष्पादन योग्य पथ को घेरने के साथ अंतरिक्ष पूरी तरह से गलत है, कम से कम विंडोज़ के लिए 10. उद्धरण की आवश्यकता है अगर और केवल यदि पथ में विशेष वर्ण जैसे व्हॉट्सएप शामिल हैं। इसके अलावा, आवरण (लोव / अपर / मिक्स्ड-केस) कहीं भी फर्क नहीं पड़ता है, चर नामों में भी, और displayname="my service"पहली पंक्ति ( Name) के रूप में देखने के लिए एक सेवा बनाते समय कमांडलाइन पर पास करने के लिए एक और गुडी है services.msc

2
इसके बाद binPath=का स्थान मेरे लिए विंडोज 7 पर आवश्यक था, लेकिन विंडोज 10 पर नहीं
डैचंग

242

एक सेवा के रूप में .BAT या किसी भी .EXE फ़ाइल को चलाने के लिए NSSM ( नॉन-सकिंग सर्विस मैनेजर ) का उपयोग करें ।

http://nssm.cc/

  • चरण 1 : एनएसएसएम डाउनलोड करें
  • चरण 2 : के साथ अपने sevice स्थापित करेंnssm.exe install [serviceName]
  • चरण 3 : यह एक जीयूआई खोलेगा जिसका उपयोग आप अपने निष्पादन योग्य का पता लगाने के लिए करेंगे

6
सर्वश्रेष्ठ सेवा प्रबंधक कभी। मैंने NSSM का उपयोग करते हुए एक सेवा के रूप में स्थापित करने के लिए PlexWatch प्राप्त करने में भी कामयाबी हासिल की।
इम्पीरियल

2
क्या यह सेट हमेशा के लिए सेवा है? हर विंडो शुरू होती है सेवा शुरू होगी? यह भी कि मैं उपयोगकर्ता बातचीत के बिना यह कैसे कर सकता हूं? एक स्क्रिप्ट या किसी प्रकार का कोड?
जॉन डेमेट्रियॉ

9
यह पूरी तरह से बहुत अच्छा है, मुझे लगता है मैं बजाय पहले एक के इस जवाब को स्वीकार पाती, :-(
जर्मन Latorre

2
मैं सर्वर पर सेवा के रूप में ड्रॉपबॉक्स चला सकता हूं। बिल्कुल एक गैर चूसने वाला उपकरण!
बैरी ग्वेनकाया

1
क्या exe फ़ाइल एक Windows सेवा परियोजना होनी चाहिए, nssm के साथ काम करने में सक्षम होने के लिए या यह एक सामान्य exe फ़ाइल हो सकती है? क्योंकि, जब मैं nssm का उपयोग शुरू करता हूँ [servicename] तो यह त्रुटि दिखाती है जैसे, Windows सेवा नहीं चल सकती? कमांड प्रॉम्प्ट आदि
संजीव

92

विस्तार (केविन टोंग) जवाब।

चरण 1: डाउनलोड और खोलना nssm-2.24.zip

चरण 2: कमांड लाइन प्रकार से:

C:\> nssm.exe install [servicename]

यह नीचे के रूप में GUI खोल देगा (उदाहरण UT2003 सर्वर है), तो बस इसे ब्राउज़ करें: yourapplication.exe

यहां छवि विवरण दर्ज करें

अधिक जानकारी: https://nssm.cc/usage


4
सही सिंटेक्स nssm.exe install [serviceName]। यह समाधान काम करता है लेकिन अगर आपके पास GUI अनुप्रयोग है, तो यह Win Serever2003 पर काम नहीं करेगा। यदि आप बाद में इसे हटाना चाहते हैं, तो उपयोग करेंnssm.exe remove [youservicename]
हम्माद खान

1
मैं मान रहा हूँ कि nginx का संदर्भ इसलिए है क्योंकि वह विशेष कार्यक्रम है जिसे आप एक सेवा के रूप में चलाना चाहते हैं? जब तक मैंने hmd की टिप्पणी को ऊपर नहीं देखा था, तब तक मुझे लगा था कि आप यह सुनिश्चित करने में मदद कर रहे हैं कि nginx को स्थापित करने या कुछ करने के लिए एक आवश्यक निर्भरता थी ... लेकिन फिर GUI में ऐसा लगता है कि आप nginx स्थापित नहीं कर रहे हैं, आप एक अवास्तविक टूर्नामेंट स्थापित कर रहे हैं सर्वर? केवल यह इंगित करते हुए कि उदाहरण असंगत और संभावित रूप से भ्रामक है। एक सरल "मान लीजिए कि आप एक सेवा के रूप में नंगेक्स को स्थापित करना चाहते थे, तो यह इस तरह दिखेगा:" मदद करेगा।
flutefreak7

@ flutefreak7 हां nginxजरूरी नहीं है और भ्रामक है। कमांड इसके बिना भी काम करेगा। यदि आप कमांड प्रॉम्प्ट से सेवा का नाम देना चाहते हैं तो यह वैकल्पिक पैरामीटर है।
हमाद खान

1
जब मैं nssm का उपयोग करने का प्रयास करता हूं तो मेरा विंडोज फॉर्म चालू हो जाता है लेकिन फॉर्म नहीं दिखाया जाता है ... क्यों?
रेडेंको ज़ेक

यह आपके एप्लिकेशन को विंडोज सेवा के रूप में चला रहा है, ज्यादातर वे बैकएंड के लिए हैं। यह भी हो सकता है कि इसका एक और रूट / व्यवस्थापक उपयोगकर्ता नाम के रूप में चल रहा हो। आपको इसकी जांच करनी होगी। इसके अलावा और अधिक जानकारी आप यहाँ देख सकते हैं: nssm.cc/usage

16

कई मौजूदा उत्तरों में स्थापित समय पर मानवीय हस्तक्षेप शामिल है। यह एक त्रुटि-प्रवण प्रक्रिया हो सकती है। यदि आपके पास कई निष्पादक हैं जिन्हें सेवाओं के रूप में स्थापित किया जाना है, तो आखिरी चीज जो आप करना चाहते हैं, उन्हें मैन्युअल रूप से स्थापित समय पर करना है।

ऊपर वर्णित परिदृश्य की ओर, मैंने सेवा के रूप में एक निष्पादन योग्य स्थापित करने के लिए एक कमांड लाइन टूल सरमन बनाया । आपको केवल लिखने की आवश्यकता है (और केवल एक बार लिखना) आपके निष्पादन योग्य के साथ-साथ एक सरल सेवा कॉन्फ़िगरेशन फ़ाइल है। Daud

serman install <path_to_config_file>

सेवा स्थापित करेगा। stdoutऔर stderrसभी लॉग इन हैं। अधिक जानकारी के लिए, परियोजना की वेबसाइट देखें

एक कामकाजी कॉन्फ़िगरेशन फ़ाइल बहुत सरल है, जैसा कि नीचे दिखाया गया है। लेकिन इसमें कई उपयोगी विशेषताएं भी हैं जैसे कि <env>और <persistent_env>नीचे।

<service>
  <id>hello</id>
  <name>hello</name>
  <description>This service runs the hello application</description>

  <executable>node.exe</executable>

  <!-- 
       {{dir}} will be expanded to the containing directory of your 
       config file, which is normally where your executable locates 
   -->
  <arguments>"{{dir}}\hello.js"</arguments>

  <logmode>rotate</logmode>

  <!-- OPTIONAL FEATURE:
       NODE_ENV=production will be an environment variable 
       available to your application, but not visible outside 
       of your application
   -->
  <env name="NODE_ENV" value="production"/>

  <!-- OPTIONAL FEATURE:
       FOO_SERVICE_PORT=8989 will be persisted as an environment
       variable to the system.
   -->
  <persistent_env name="FOO_SERVICE_PORT" value="8989" />
</service>

9

ये अतिरिक्त उपयोगी साबित होते हैं .. एक प्रशासक के रूप में निष्पादित किए जाने की आवश्यकता है

sc create  <service_name> binpath=<binary_path>
sc stop    <service_name>
sc queryex <service_name>
sc delete  <service_name>

यदि आपके सेवा नाम में कोई स्थान है, तो "उद्धरण" में संलग्न करें।


इसमें कोई INSTALL कमांड नहीं है और न ही मेरी जीत 2003 sc.exe 5.2.3790.3959 में, न ही एम $ एफ 1 में
user6698332

1
"इंस्टॉल" के बजाय "बनाएं" का उपयोग करें। sc create <service_name> binpath= <binary_path>
सीएसकेयर

4

मैंने उसके लिए एक अच्छे उत्पाद का परीक्षण किया है: ऑलवेजअप । नि: शुल्क नहीं, लेकिन उनके पास 30 दिनों का परीक्षण अवधि है ताकि आप इसे आजमा सकें ...


0

आप सर्विस क्रिएट \ edit \ डिलीट ऑपरेशंस के लिए मेरी छोटी फ्री यूटिलिटी देख सकते हैं। यहाँ उदाहरण बनाएँ:

सेवा पर जाएँ -> संशोधित -> बनाएँ

यहां छवि विवरण दर्ज करें

निष्पादन योग्य फ़ाइल (Google ड्राइव): [डाउनलोड]

स्रोत कोड: [डाउनलोड]

ब्लॉग पोस्ट: [BlogLink]

सेवा संपादक वर्ग: WinServiceUtils.cs

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.