Windows सेवा के लिए निष्पादन योग्य में पथ कैसे बदलें?


55

मैं कमांड लाइन से एक सेवा के लिए निष्पादन योग्य में पथ बदलना चाहता हूं।

मैं उसे कैसे कर सकता हूँ?

मैं उस सेवा के पथ से निष्पादन योग्य के लिए एक और .EXE चलाना चाहता हूं।


यदि डेव का उत्तर वह नहीं है जो आपको चाहिए, तो कृपया थोड़ा और समझाने के लिए "संपादित करें" लिंक का उपयोग करें?
अर्जन

जवाबों:


70

sc configपथ को सेवा बिंदु को बदलने के लिए आप कमांड का उपयोग कर सकते हैं :

SC CONFIG YourServiceName binPath= "C:\SomeDirectory\YourFile.EXE"

यह नामक सेवा को अपडेट करेगा YourServiceNameऔर "पथ से निष्पादन योग्य" प्रविष्टि में बदल जाएगा C:\SomeDirectory\YourFile.EXE। आप बाद में अपनी सेवा को फिर से शुरू करना चाहेंगे, जिसे आप कर सकते हैं:

NET STOP YourServiceName & NET START YourServiceName

यदि आप MySQL config (.ini) को किसी अन्य ड्राइव पर ले जा रहे हैं। आप भीतर के भावों को छोड़ सकते हैं। बस दोहरे उद्धरण चिह्नों की एक जोड़ी में पूरे संशोधित स्ट्रिंग लपेटें। Win7 पर मेरे: .ini और डेटा फ़ोल्डर को D: ड्राइव पर ले जाया गया।
बजे ब्रायन बोटराइट

1
जब Path to executableउद्धरण और अन्य पैरामीटर भी शामिल हों तो क्या होगा ? उदाहरण के लिए: "C:\Program Files\CollabNet\Subversion Server\svnserve.exe" --service -r "E:\Repositories" --listen-port "3690"मुझे दुख की बात है कि इस के लिए रेगिट मार्ग जाना पड़ा।
जेम्स स्कैप

@ नाम - मुझे पूरा यकीन है कि आप उन पात्रों से बच सकते हैं, लेकिन मुझे इसके साथ खेलना होगा और आपको वापस लाना होगा।
LittleBobbyTables

6
नोट करना चाहेंगे कि बिनपथ = और कमांड के बीच एक आवश्यक स्थान है। गूंगा, मुझे पता है।
च्लोए

2
बिनपाथ के उद्धरण बैकस्लैश से बच सकते हैं: \ "
ग्विन

16

आपको रजिस्ट्री में यह करना होगा:

HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services

सेवा पर नेविगेट करें, फिर नए पथ को प्रतिबिंबित करने के लिए छवि नाम को संशोधित करें

हमेशा की तरह, सिस्टम PRIOR का बैकअप बनाएं।


इसने मेरे लिए बेहतर काम किया। मैं जिस सेवा को बदल रहा था उसमें कुछ जटिल तर्क थे।
जॉन एलर्स

2

आप इसे PowerShell के साथ भी कर सकते हैं:

Get-WmiObject win32_service -filter "Name='My Service'" `
    | Invoke-WmiMethod -Name Change `
    -ArgumentList @($null,$null,$null,$null,$null, `
    "C:\Program Files (x86)\My Service\NewName.EXE")

या:

Set-ItemProperty -Path "HKLM:\System\CurrentControlSet\Services\My Service" `
    -Name ImagePath -Value "C:\Program Files (x86)\My Service\NewName.EXE"

1

ऊपर दिया गया उत्तर बहुत अच्छा काम करता है, मैं इसका जवाब नहीं दे सकता, लेकिन जोड़ने के लिए, यदि आपको रास्ते में उद्धरण या अन्य तर्क देने की आवश्यकता है, तो रजिस्ट्री में एक निर्विवाद पथ भेद्यता को ठीक करने के लिए कहें, जैसे कि इमेजपैथ, आप व्यवस्थापक के रूप में सीएमडी से निम्नलिखित कर सकते हैं :

(उदाहरण के लिए C: \ Program Files (x86) \ YourService \ YourProcess.exe)

SC CONFIG YourService binPath= "\"C:\Program Files (x86)\YourService\YourProcess.exe\"

आप व्यवस्थापक के रूप में निम्नलिखित से कर सकते हैं :

 SC.exe CONFIG YourService binPath= --% "\"C:\Program Files (x86)\YourService\YourProcess.exe\"

ये आपको निम्नलिखित परिणाम देंगे:

"C:\Program Files (x86)\YourService\YourProcess.exe"

... खूनी तर्क और बचने के पैरामीटर एक बुरा सपना हैं! आशा है कि यह भविष्य में किसी की मदद करेगा।


0

किसी सेवा को निष्पादित करने के लिए आप सीधे अपने पथ को संपादित नहीं कर सकते। उसके लिए आप sc कमांड का उपयोग कर सकते हैं,

अपने कमांड प्रॉम्प्ट को व्यवस्थापक के रूप में खोलें, फिर निम्न कमांड टाइप करें,

SC CONFIG ServiceName binPath= "Path of your file"

उदाहरण के लिए:

sc config MongoDB binPath="I:\Programming\MongoDB\MongoDB\bin\mongod.exe --config I:\Programming\MongoDB\MongoDB\bin\mongod.cfg --service"

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