วิธีเปลี่ยนพา ธ ไปใช้งานได้สำหรับบริการ Windows


55

ฉันต้องการเปลี่ยนพา ธ ไปใช้งานได้สำหรับบริการจากบรรทัดคำสั่ง

ฉันจะทำสิ่งนั้นได้อย่างไร

ฉันต้องการเรียกใช้. EXE อื่นจากเส้นทางของบริการนั้นไปยังปฏิบัติการได้


หากคำตอบของเดฟไม่ใช่สิ่งที่คุณต้องการโปรดใช้ลิงก์ "แก้ไข" เพื่ออธิบายเพิ่มเติมอีกเล็กน้อย?
Arjan

คำตอบ:


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) ไปยังไดรฟ์อื่น คุณสามารถละทิ้งคำพูดภายใน เพียงแค่ตัดสตริงที่แก้ไขทั้งหมดในคู่ของเครื่องหมายคำพูดคู่ ย้าย. ini และโฟลเดอร์ data ของฉันไปที่ D: drive บน Win7
Brian Boatright

1
แล้วเมื่อไหร่ที่Path to executableมีเครื่องหมายคำพูดและพารามิเตอร์อื่น ๆ ตัวอย่างเช่น"C:\Program Files\CollabNet\Subversion Server\svnserve.exe" --service -r "E:\Repositories" --listen-port "3690"ฉันเศร้าต้องไปเส้นทาง regedit สำหรับอันนี้
James Skemp

@ James - ฉันค่อนข้างแน่ใจว่าคุณสามารถหลบหนีตัวละครเหล่านั้นได้ แต่ฉันจะต้องเล่นกับมันและกลับไปหาคุณ
LittleBobbyTables

6
ต้องการทราบว่ามีช่องว่างที่จำเป็นระหว่าง binpath = และคำสั่ง โง่ฉันรู้
Chloe

2
เครื่องหมายคำพูดใน binPath สามารถหลบหลีกด้วยแบ็กสแลช: \ "
gwyn

16

คุณจะต้องทำเช่นนั้นในรีจิสทรี:

HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services

นำทางไปยังบริการจากนั้นแก้ไขชื่อภาพเพื่อสะท้อนถึงเส้นทางใหม่

เช่นเคยทำการสำรองข้อมูลของระบบก่อน


สิ่งนี้ใช้ได้ผลดีกว่าสำหรับฉัน บริการที่ฉันเปลี่ยนมีข้อโต้แย้งที่ซับซ้อน
John Allers

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

คำตอบที่ให้ไว้ข้างต้นใช้งานได้ดีฉันไม่สามารถตอบกลับได้ แต่เพื่อเพิ่มขึ้นในกรณีที่คุณจำเป็นต้องมีเครื่องหมายคำพูดหรือข้อโต้แย้งอื่น ๆ ในเส้นทางพูดเพื่อแก้ไขช่องโหว่ของเส้นทางที่ไม่รู้จักในรีจิสทรีเช่น imagepath คุณ สามารถทำสิ่งต่อไปนี้จาก CMDในฐานะผู้ดูแลระบบ:

(เช่นสำหรับไฟล์ C: \ Program (x86) \ YourService \ YourProcess.exe)

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

คุณสามารถทำสิ่งต่อไปนี้จาก powershellในฐานะผู้ดูแลระบบ:

 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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.