एक विंडोज़ सेवा के "निष्पादन योग्य पथ" को संशोधित करना


253

मैं अपने आवेदन में पथ को संशोधित करना चाहता हूं, लेकिन ऐसा करने से यह टूट जाता है क्योंकि सेवा अभी भी पुराने स्थान की ओर इशारा करती है।

Administrative Tools > Servicesआपके पास जाकर एक गुण संवाद खोल सकता है और देख सकता है Path to executable, लेकिन इसे बदलने का कोई तरीका नहीं है।

क्या कोई तरीका है जिससे उपयोगकर्ता एप्लिकेशन को फिर से स्थापित किए बिना सेवा पथ को संशोधित कर सकता है?

जवाबों:


245

सुपरयूज़र पर यह दृष्टिकोण भी देखा गया है जो scरजिस्ट्री को संशोधित करने के बजाय कमांड लाइन का उपयोग करता है :

sc config <service name> binPath= <binary path>

नोट: अंतरिक्ष के बाद binPath=महत्वपूर्ण है। आप वर्तमान कॉन्फ़िगरेशन का उपयोग करके क्वेरी भी कर सकते हैं:

sc qc <service name>

यह निम्न के समान आउटपुट प्रदर्शित करता है:

[SC] QueryServiceConfig SUCCESS

SERVICE_NAME: ServiceName

    TYPE               : 10  WIN32_OWN_PROCESS
    START_TYPE         : 2   AUTO_START
    ERROR_CONTROL      : 1   NORMAL
    BINARY_PATH_NAME   : C:\Services\ServiceName
    LOAD_ORDER_GROUP   :
    TAG                : 0
    DISPLAY_NAME       : <Display name>
    DEPENDENCIES       :
    SERVICE_START_NAME : user-name@domain-name

24
मैं सीधे रजिस्ट्री परिवर्तन पर इस दृष्टिकोण की सिफारिश करूंगा। कई रास्तों को उद्धृत स्ट्रिंग्स की आवश्यकता होती है, जिसे आप निम्नानुसार दर्ज कर सकते हैं, उदाहरण के लिए एमएस एसक्यूएल सर्वर के साथ: sc config mssqlserver binPath= "\"F:\SQL DATA\MSSQL10.MSSQLSERVER\MSSQL\Binn\sqlservr.exe\" -sMSSQLSERVER"
मार्क डर्डिन

2
यह प्रत्यक्ष रजिस्ट्री संशोधन दृष्टिकोण की तुलना में तैनाती स्क्रिप्ट में शायद थोड़ा अच्छा है।
नियाल कनॉटहटन

मिठाई। रेग में इधर-उधर घूमने की तुलना में क्लीनर। ** ध्यान दें: आपको परिवर्तन देखने के लिए सेवाओं को बंद करने और खोलने की आवश्यकता होगी।
yonsk

1
यदि आप एक मिलता है [SC] QueryServiceConfig FAILED 122:के बाद sc qc Xउपयोग sc qc X 1000को देखने के लिए इस
राफेल

13
यदि PowerShell से इसका उपयोग किया जाता है sc.exe, तो सुनिश्चित करें कि आप उपयोग करते हैं , न कि नग्नsc
fiat

292

इसमें रजिस्ट्री का संपादन शामिल है, लेकिन सेवा की जानकारी मिल सकती है HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services। उस सेवा को ढूंढें जिसे आप पुनर्निर्देशित करना चाहते हैं, ImagePathउपकुंजी का पता लगाएं और उस मूल्य को बदलें।


3
हालांकि अंत में यह रजिस्ट्री डेटा की ओर जाता है, मुझे यह उल्लेख करना चाहिए कि सेवा से निपटने के लिए विशेष विंडोज एपीआई फ़ंक्शन मौजूद हैं। प्रत्यक्ष रजिस्ट्री संशोधन से बचा जाना चाहिए (क्योंकि आप यह सुनिश्चित नहीं कर सकते कि जब आप इसे करने के लिए पथ को संशोधित करते हैं, तो विंडोज क्या बदल रहा है) जब तक आप पूरी तरह से सुनिश्चित नहीं होते कि आप क्या करते हैं।
लोपेजे जूल 22'16

3
@lospejos "मुझे उल्लेख करना चाहिए कि सेवा से निपटने के लिए विशेष विंडोज एपीआई फ़ंक्शन मौजूद हैं ..." जो होगा?
निक एम

यदि किसी को Service.msc में अपडेट किया गया सेवा पथ दिखाई नहीं देता है, तो cmd में mmc.exe "taskkill / F / IM mmc.exe" को मारने का प्रयास करें
Drag0nKn1ght

10

आप इसे 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"

3

ओपन रन (जीत + आर), "रजिस्ट्री संपादक" खोलने के लिए, "Regedit.exe" टाइप करें

HKEY_LOCAL_MACHINE \ प्रणाली \ CurrentControlSet \ Services

" Apache2.4 " ढूंढें फ़ोल्डर खोलें दाईं ओर " ImagePath " ढूंढें, " ImagePath " खोलें " मूल्य डेटा " के तहत निम्न पथ डालें:

अन्य लोगों के लिए "C: \ xampp \ Apache \ bin \ httpd.exe" -k रनवे दुश्मन XAMPP उस स्थान को इंगित करता है जहां Apache इंस्टॉल किया गया है और बिन फ़ोल्डर का पता लगाता है "C: (Apache इंस्टॉल किया गया स्थान) \ bin \ http \" -k रनवे


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"

0

इस @CodeMaker के उत्तर में थोड़ा संशोधन, मेरे जैसे किसी के लिए जो प्रमाणीकरण का उपयोग करने के लिए एक MongoDB सेवा को संशोधित करने का प्रयास कर रहा है।

जब मैंने "सेवा" में "निष्पादन योग्य के लिए पथ" को देखा, तो निष्पादित लाइन में पहले से ही भाषण के निशान थे। इसलिए मुझे उनके उदाहरण में मामूली संशोधन करना पड़ा।

विस्तार से।

  1. Windows में सेवाएँ टाइप करें
  2. MongoDB खोजें (या जिस सेवा को आप बदलना चाहते हैं) और सेवा को खोलें, जिससे यह सुनिश्चित हो सके।
  3. सेवा का नाम नोट करें (प्रदर्शन नाम नहीं)
  4. देखो और "निष्पादन योग्य के लिए पथ" को कॉपी करें और इसे कॉपी करें।

मेरे लिए रास्ता था (भाषण के चिह्नों पर ध्यान दें)

"C:\Program Files\MongoDB\Server\4.2\bin\mongod.exe" --config "C:\Program Files\MongoDB\Server\4.2\bin\mongod.cfg" --service

एक कमांड लाइन प्रकार में

sc config MongoDB binPath= "<Modified string with \" to replace ">"

मेरे मामले में यह था

sc config MongoDB binPath= "\"C:\Program Files\MongoDB\Server\4.2\bin\mongod.exe\" --config \"C:\Program Files\MongoDB\Server\4.2\bin\mongod.cfg\" --service -- auth"

-2

आप सेवा को हटा सकते हैं:

sc delete ServiceName

फिर सेवा को फिर से बनाएँ।


3
ऐसा करने की कोई आवश्यकता नहीं है, ऐसा करने के लिए कम से कम 3 बेहतर तरीके हैं
Liam

-2

'SC ’कमांड के साथ थोड़ा गहरा, हम सभी' Services Name’ निकालने में सक्षम हैं और सभी को ery QueryServiceConfig ’:) मिला है।

>SC QUERY > "%computername%-services.txt" [enter]

>FIND "SERVICE_NAME: " "%computername%-services.txt" /i > "%computername%-services-name.txt" [enter]

>NOTEPAD2 "%computername%-services-name.txt" [enter]

'छोटे' NOTEPAD2 संपादन करें 'SERVICE_NAME:', CTRL + H चुनें, 'सभी बदलें' पर क्लिक करें कल्पना कीजिए कि हम 'सीएमडी' के भीतर 'रिप्लेस ऑल' कर सकते हैं

फिर, 'सीएमडी' के साथ जारी रखें।

>FOR /F "DELIMS= SKIP=2" %S IN ('TYPE "%computername%-services-name.txt"') DO @SC QC "%S" >> "%computername%-services-list-config.txt" [enter]

>NOTEPAD2 "%computername%-services-list-config.txt" [enter]

यह 'हमारी मशीन पर सेवाएँ' है कच्चे डेटा 'भविष्य के बैच फ़ाइल' को खिलाने के लिए तैयार है, इसलिए परिणाम नीचे इस तरह दिखता है !!!

+ -------------+-------------------------+---------------------------+---------------+--------------------------------------------------+------------------+-----+----------------+--------------+--------------------+
| SERVICE_NAME | TYPE                    | START_TYPE                | ERROR_CONTROL | BINARY_PATH_NAME                                 | LOAD_ORDER_GROUP | TAG | DISPLAY_NAME   | DEPENDENCIES | SERVICE_START_NAME |
+ -------------+-------------------------+---------------------------+---------------+--------------------------------------------------+------------------+-----+----------------+--------------+--------------------+
+ WSearch      | 10  WIN32_OWN_PROCESS   | 2   AUTO_START  (DELAYED) | 1   NORMAL    | C:\Windows\system32\SearchIndexer.exe /Embedding | none             | 0   | Windows Search | RPCSS        | LocalSystem        |
+ wuauserv     | 20  WIN32_SHARE_PROCESS | 2   AUTO_START  (DELAYED) | 1   NORMAL    | C:\Windows\system32\svchost.exe -k netsvcs       | none             | 0   | Windows Update | rpcss        | LocalSystem        |

लेकिन, HTML बहुत आसान हो जाएगा: D

सुधार के लिए किसी भी उज्ज्वल विचारों का स्वागत है V ^ _ ^


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