विंडोज पर कुछ प्रारंभ मापदंडों के साथ एक सेवा कैसे शुरू करें


18

मैं कुछ मापदंडों के साथ एक सेवा कैसे शुरू कर सकता हूं? में एक और सवाल मैं पाया है

net start servicename blah

लेकिन अगर मैं यह कोशिश करता हूं, तो netमुझ पर एक वाक्यविन्यास त्रुटि फेंकता है।

मैं क्या गलत कर रहा हूं?

संपादित करें: स्पष्ट करने के लिएnet start servicenameकाम करता है ठीक है, लेकिन मैं सेवा करने के लिए पैरामीटर भेजने की जरूरत है। मैं इसेservices.mscसेवा शुरू करने से पहले एक स्टार्ट पैरामीटर में भरकरमैन्युअल रूप से कर सकता हूं। लेकिन मैं इसे एक स्क्रिप्ट से कैसे कर सकता हूं?

एक और संपादन: क्षमा करें, लेकिन मेरा प्रश्न भ्रामक था। मेरे परीक्षणों में, मेरे पास कई और पैरामीटर थे और इसके/blah net startबारेमेंशिकायतनहीं है। वास्तव में, स्लैश से शुरू होने वाली कोई भी चीज ठीक है । तोnet start servicename /blahकाम करता है,net start servicename blahकाम नहीं करता है। जब से मुझे जरूरत हैnet start servicename /foo bar,barयही समस्या है।

जवाबों:


29
sc start fooservice arg1 arg2 ...

मुझे नहीं पता कि मैं कैसे आपके उत्तर को वापस लेने में कामयाब रहा, लेकिन मैं निश्चित रूप से बहुत खुश हूं कि मैंने इसे अब (दुर्घटना से) पाया। यह एक आकर्षण की तरह काम करता है - यहां तक ​​कि उन मापदंडों के साथ जो इसके साथ शुरू नहीं होते हैं /। आपका बहुत बहुत धन्यवाद!
sbi

यह 2018 और न तो "अनुसूचित जाति शुरू ..." और न ही है "शुद्ध शुरू ..." विंडोज 10 संपादन में काम करने लगता है रजिस्ट्री करता है काम serverfault.com/questions/507561/...
मार्च

8

NET STARTजहां तक ​​मुझे पता है आप इसे मनमाने ढंग से मापदंडों को पारित करने की अनुमति नहीं देंगे (यह प्रतीत होता है कि उन्हें / के साथ उपसर्ग करना है), मेरा मानना ​​है कि सही रजिस्ट्री कुंजी को संशोधित करने और सेवा को रोकने / शुरू करने का सही तरीका है। आपकी कस्टम सेवा को MyService कहा जाता है:

[HKLM\SYSTEM\CurrentControlSet\Services\MyService]
"ImagePath":C:\Projects\MyService\bin\MyService.exe Parameter1 Parameter2

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

यदि यह संयोग से .NET विकसित सेवा है, तो आप अपने फाइल सिस्टम पर निष्पादन योग्य की n प्रतियां बना सकते हैं , और प्रत्येक में स्वचालित रूप से उपयुक्त app.config फ़ाइल से पैरामीटर प्राप्त होते हैं।

ऐसा लगता है कि आपने Win32 बॉक्स के बाहर बहुत दूर कदम रखा होगा। चूंकि यह कस्टम डेवलपमेंट की तरह लगता है, अन्य किसी भी समाधान की पेशकश करते हैं, जबकि शायद आपका आदर्श नहीं है, सही ढंग से काम करेगा और जाने के लिए एक सुरक्षित तरीका है।


ओह। सेवा एक कॉन्फ़िगरेशन फ़ाइल लेती है। यह या तो एक डिफ़ॉल्ट फ़ाइल नाम का उपयोग करता है या एक इसे पारित किया है। चूंकि मुझे सेवा चलाने के दो अलग-अलग उदाहरणों की आवश्यकता है, इसलिए मुझे उन्हें अलग-अलग कॉन्फ़िगरेशन फ़ाइलों पर इंगित करना होगा। रजिस्ट्री के साथ बेला होने के लिए एक बहुत बदसूरत हैक लगता है। क्या वास्तव में उस (और जीयूआई) के अलावा कोई रास्ता नहीं है?
sbi

Goyuix, मेरे संपादित प्रश्न देखें। मापदंडों net start को स्वीकार करता है , लेकिन केवल उन लोगों के साथ जो शुरू करते हैं /
sbi

Goyuix, मैं अब उपयोग करता हूं sc.exe। ग्रेविटी का जवाब देखें (जो मैं किसी तरह वापस याद करने में कामयाब रहा)।
sbi

4

उपयोग करते समय आपको प्रत्येक पैरामीटर से पहले स्लैश की आवश्यकता होती है net start। रिक्त स्थान रखने वाले मापदंडों को भी उद्धृत करना सुनिश्चित करें।

net start servicename /param0 /"param1 with spaces" /"/param2_has_slash"

मेरी समस्या को फिर से देखो। मेरे पास ऐसे पैरामीटर हैं जो (को) स्लैश के साथ भी शुरू होते हैं। मैं उन लोगों को कैसे पास करूंगा?
sbi

इसे आज़माएँ: नेट स्टार्ट सर्विसेनम / "/ फू" / बार
यहां तक ​​कि मियां

3

net start servicename /foo एक तर्क के लिए

net start servicename /"foo bar" एक स्ट्रिंग या आर्ग की सूची के लिए

नोट : यह प्रश्न 8 साल पुराना है, लेकिन मेरे पास स्वीकृत उत्तर पर टिप्पणी करने के लिए प्रतिष्ठा नहीं है और यह 2018 में अभी भी एक शीर्ष Google परिणाम है इसलिए मैं स्पष्ट करना चाहता था कि प्रश्नों के अंतिम संपादन के संबंध में अब क्या काम कर रहा था।


नोट: मैंने आपको एक अपवोट दिया है, इसलिए अब आपका उत्तर ४ वें स्थान पर है, और आपको कुछ प्रतिनिधि टक्कर मिली है। यहाँ मज़े करो! :-)
sbi

1

आपको वास्तविक सेवा नाम का उपयोग करने की आवश्यकता है क्योंकि यह नियंत्रण कक्ष, सेवाओं में दिखाई देता है। यदि इसमें रिक्त स्थान हैं, तो आपको सेवा नाम के आसपास उद्धरण देना होगा।

net startकमांड प्रॉम्प्ट पर किसी भी पैरामीटर के बिना वास्तविक सेवा नाम प्राप्त करने के लिए । यह आपको सभी चलने वाली सेवाओं की एक सूची देनी चाहिए ताकि आप वास्तविक सेवा नाम प्राप्त कर सकें। तो बस उपयोग करेंnet start <servicename>


रॉबर्ट, यह मेरी एक सेवा है जिसे मैं स्थापित करता हूं और फिर एक स्क्रिप्ट में शुरू करता हूं। मैं net start "my-service-name"ठीक करता हूं । यह net start "my-service-name" /blahमुझे एक त्रुटि संदेश देता है। मैंने भी कोशिश की है net start "my-service-name" -blahऔर यह भी, एक वाक्यविन्यास त्रुटि है।
sbi

0

क्या InstSrv और SrvAny इसमें सहायता कर सकते हैं? गाइड और लिंक


मैंने इसे संक्षेप में देखा है और मुझे ऐसा नहीं लगता। (कृपया मुझे सही करें अगर मैं गलत हूं।) मेरे पास एक वास्तविक सेवा निष्पादन योग्य है और बस ठीक चल रहा है। यह सिर्फ इतना है कि (परीक्षणों के लिए) मुझे इसे एक स्क्रिप्ट से स्थापित करने और शुरू करने की आवश्यकता है, और मुझे सेवा के लिए मापदंडों को पारित करने की आवश्यकता है।
sbi
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.