2011-08-25 20 views
192

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

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

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

उत्तर

151

वहाँ भी this approach seen on SuperUser जो sc कमांड लाइन के बजाय का उपयोग करता रजिस्ट्री को संशोधित की है binPath= के बाद अंतरिक्ष महत्वपूर्ण है। तुम भी उपयोग करते हुए वर्तमान कॉन्फ़िगरेशन को क्वेरी कर सकते हैं:

sc qc <service name> 

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

[अनुसूचित जाति] QueryServiceConfig सफलता

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 : [email protected] 
+11

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

+2

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

+0

मीठा। Reg में चारों ओर mucking से क्लीनर। ** नोट: परिवर्तन देखने के लिए आपको सेवाओं को बंद करने और खोलने की आवश्यकता होगी। एमएससी। – yonsk

264

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

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

नोट::

+2

अंत में इस डेटा रजिस्ट्री की ओर जाता है हालांकि, मैं विशेष विंडोज वहाँ मौजूद है कि उल्लेख करना चाहिए सेवा से निपटने के लिए एपीआई कार्यों। डायरेक्ट रजिस्ट्री संशोधन से बचा जाना चाहिए (क्योंकि आप यह सुनिश्चित नहीं कर सकते कि विंडोज़ क्या बदल रहा है जब यह exe के पथ को संशोधित करता है, f.e.) जब तक आप ** बिल्कुल ** सुनिश्चित नहीं करते कि आप क्या करते हैं। – lospejos

+3

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

+3

यह एक बुरा जवाब है क्योंकि एससी कमांड – Worthy7

0

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

sc delete ServiceName 

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

+1

ऐसा करने की कोई आवश्यकता नहीं है, – Liam

7

तुम भी 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

'अनुसूचित जाति' कमांड के साथ एक छोटा सा गहरा, हम निकालने के लिए सभी 'सेवा का नाम' में सक्षम हैं और मिल गया सभी '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] 

Do 'छोटे' Notepad2 संपादन .. 0,123, Imagine that we can do 'Replace All' within 'CMD'

फिर, 'अध्यक्ष एवं प्रबंध निदेशक' के साथ जारी रखने ..

>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] 

it is 'SERVICES on Our Machine' कच्चे डेटा 'भविष्य बैच फ़ाइल' खिला तो परिणाम यह नीचे की तरह लग रही है के लिए तैयार है !!!

+ -------------+-------------------------+---------------------------+---------------+--------------------------------------------------+------------------+-----+----------------+--------------+--------------------+ 
| 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  | 

लेकिन, एचटीएमएल बहुत आसान हो जाएगा: डी

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

+0

करने के लिए कम से कम 3 बेहतर तरीके हैं या 'sc' का उपयोग करें जो बहुत आसान है और कम करने के लिए कम पसंद है। – Liam