Làm cách nào để thay đổi đường dẫn thành tệp thực thi cho Dịch vụ Windows?


55

Tôi muốn thay đổi đường dẫn đến tệp thực thi cho một dịch vụ từ dòng lệnh.

Làm thế nào tôi có thể làm điều đó?

Tôi muốn chạy một .EXE khác từ đường dẫn của dịch vụ đó để thực thi.


Nếu câu trả lời của Dave không phải là những gì bạn cần, thì vui lòng sử dụng liên kết "chỉnh sửa" để giải thích thêm một chút?
Arjan

Câu trả lời:


71

Bạn có thể sử dụng sc configlệnh để thay đổi đường dẫn mà dịch vụ trỏ tới:

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

Điều này sẽ cập nhật dịch vụ được gọi YourServiceNamevà thay đổi mục nhập "Đường dẫn đến thực thi" thành C:\SomeDirectory\YourFile.EXE. Bạn sẽ muốn khởi động lại dịch vụ của mình sau đó, điều bạn có thể làm với:

NET STOP YourServiceName & NET START YourServiceName

Nếu bạn đang di chuyển cấu hình MySQL (.ini) sang ổ đĩa khác. Bạn có thể để lại các trích dẫn bên trong. Chỉ cần bọc toàn bộ chuỗi sửa đổi trong một cặp dấu ngoặc kép. Đã chuyển thư mục .ini và dữ liệu của tôi sang ổ D: trên Win7.
Brian Boatright

1
Điều gì về khi Path to executablecũng chứa dấu ngoặc kép và các tham số khác? Ví dụ: "C:\Program Files\CollabNet\Subversion Server\svnserve.exe" --service -r "E:\Repositories" --listen-port "3690"tôi buồn bã phải đi theo con đường regedit cho cái này.
James Skemp

@James - Tôi khá chắc chắn rằng bạn có thể thoát khỏi những nhân vật đó, nhưng tôi sẽ phải chơi xung quanh với nó và quay lại với bạn.
LittleBulkTables

6
Muốn lưu ý có một khoảng trống bắt buộc giữa binpath = và lệnh. Ngốc, tôi biết.
Chloe

2
Các trích dẫn trong binPath có thể được thoát bằng dấu gạch chéo ngược: \ "
gwyn 21/03/13

16

Bạn sẽ cần phải làm điều đó trong sổ đăng ký:

HKEY_LOCAL_MACHINE \ HỆ THỐNG \ CurrentControlset \ Services

Điều hướng đến dịch vụ, sau đó sửa đổi tên hình ảnh để phản ánh đường dẫn mới

Như mọi khi, tạo một bản sao lưu của hệ thống TRƯỚC.


Điều này làm việc tốt hơn cho tôi. Dịch vụ tôi đang thay đổi có một số đối số phức tạp.
John Allers 10/07/2015

2

Bạn cũng có thể làm điều đó với 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")

Hoặc là:

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

1

Câu trả lời được cung cấp ở trên hoạt động rất tốt, tôi không thể trả lời nó, nhưng để thêm vào, trong trường hợp bạn cần có dấu ngoặc kép hoặc các đối số khác trong đường dẫn, hãy nói để khắc phục lỗ hổng đường dẫn không được trích dẫn trong sổ đăng ký, như đường dẫn hình ảnh, bạn có thể làm như sau từ CMD với tư cách quản trị viên:

(ví dụ: đối với C: \ Chương trình tệp (x86) \ YourService \ YourProcess.exe)

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

bạn có thể thực hiện các thao tác sau từ powershell với tư cách quản trị viên:

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

Chúng sẽ cho bạn kết quả như sau:

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

... những cuộc cãi vã đẫm máu và những thông số thoát ra là một cơn ác mộng! Mong rằng điều này sẽ giúp ai đó trong tương lai.


0

Bạn không thể trực tiếp chỉnh sửa đường dẫn của mình để thực hiện dịch vụ. Cho rằng bạn có thể sử dụng lệnh sc,

Mở dấu nhắc lệnh của bạn với tư cách quản trị viên, sau đó nhập lệnh sau,

SC CONFIG ServiceName binPath= "Path of your file"

Ví dụ:

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

: - ngoại hình của bạn giống với LittleBulkTables, nếu bạn có thể chi tiết sự khác biệt, vui lòng làm. Một bài đọc Làm thế nào để trả lờitour du lịch luôn luôn tốt mỗi giờ và sau đó.
mic84
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.