Sửa đổi đường dẫn trên mạng thành dịch vụ Windows thực thi


253

Tôi muốn sửa đổi đường dẫn đến ứng dụng của mình, nhưng làm như vậy sẽ phá vỡ nó vì dịch vụ vẫn trỏ đến vị trí cũ.

Bằng cách đi đến Administrative Tools > Servicesbạn có thể mở hộp thoại thuộc tính và xem Path to executable, nhưng không có cách nào để thay đổi nó.

Có cách nào người dùng có thể sửa đổi đường dẫn dịch vụ mà không phải cài đặt lại ứng dụng không?

Câu trả lời:


245

Ngoài ra còn có cách tiếp cận này được thấy trên SuperUser sử dụng scdòng lệnh thay vì sửa đổi sổ đăng ký:

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

Lưu ý: không gian sau binPath=là quan trọng. Bạn cũng có thể truy vấn cấu hình hiện tại bằng cách sử dụng:

sc qc <service name>

Điều này hiển thị đầu ra tương tự như:

[SC] QueryServiceConfig THÀNH CÔNG

DỊCH VỤ: Tên dịch vụ

    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
Tôi muốn giới thiệu phương pháp này qua các thay đổi đăng ký trực tiếp. Nhiều đường dẫn yêu cầu các chuỗi được trích dẫn mà bạn có thể nhập như sau, ví dụ với MS SQL Server: sc config mssqlserver binPath= "\"F:\SQL DATA\MSSQL10.MSSQLSERVER\MSSQL\Binn\sqlservr.exe\" -sMSSQLSERVER"
Marc Durdin

2
Nó có lẽ cũng đẹp hơn một chút trong kịch bản triển khai so với phương pháp sửa đổi sổ đăng ký trực tiếp.
Niall Connaughton

Ngọt. Sạch hơn mucking xung quanh trong reg. ** Lưu ý: Bạn sẽ cần đóng và mở services.msc để xem thay đổi.
yonsk

1
Nếu bạn nhận được [SC] QueryServiceConfig FAILED 122:sau khi sc qc Xsử dụng, sc qc X 1000hãy xem cái này
raphael

13
Nếu sử dụng tính năng này từ PowerShell, hãy đảm bảo bạn sử dụng sc.exe, chứ không phải khỏa thânsc
fiat

292

Nó liên quan đến việc chỉnh sửa sổ đăng ký, nhưng thông tin dịch vụ có thể được tìm thấy trong HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services. Tìm dịch vụ bạn muốn chuyển hướng, định vị ImagePathkhóa con và thay đổi giá trị đó.


3
Mặc dù cuối cùng điều này dẫn đến dữ liệu đăng ký, tôi nên đề cập rằng có tồn tại các hàm Windows API đặc biệt để xử lý dịch vụ. Nên tránh sửa đổi sổ đăng ký trực tiếp (vì bạn không thể chắc chắn Windows khác đang thay đổi gì khi nó sửa đổi đường dẫn đến exe, fe) trừ khi bạn hoàn toàn chắc chắn về những gì bạn làm.
lospejos

3
@lospejos "Tôi nên đề cập rằng có tồn tại các chức năng API Windows đặc biệt để đối phó với dịch vụ" ... đó sẽ là gì?
Nick M

Nếu ai đó không thấy đường dẫn dịch vụ được cập nhật trong Services.msc, hãy thử tiêu diệt mmc.exe "taskkill / F / IM mmc.exe" trong cmd
Drag0nKn1ght

10

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"

3

Mở Run (win + R), nhập "Regedit.exe", để mở "Trình chỉnh sửa sổ đăng ký", đi đến

HKEY_LOCAL_MACHINE \ System \ CurrentControlset \ Services

tìm " Apache2.4 " mở thư mục tìm " ImagePath " ở bên phải, mở "ImagePath" trong " giá trị dữ liệu " đặt đường dẫn sau:

"C: \ xampp \ apache \ bin \ httpd.exe" -k runservice kẻ thù XAMPP cho người khác trỏ đến vị trí nơi Apache được cài đặt và bên trong xác định vị trí thư mục bin "C: (Apache được cài đặt vị trí) \ bin \ httpd.exe" -k dịch vụ


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,

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"

0

Sửa đổi nhẹ cho câu trả lời của @CodeMaker này, cho bất kỳ ai như tôi đang cố gắng sửa đổi dịch vụ MongoDB để sử dụng xác thực.

Khi tôi nhìn vào "Đường dẫn đến thực thi" trong "Dịch vụ", dòng thực thi đã chứa các dấu hiệu lời nói. Vì vậy, tôi đã phải sửa đổi nhỏ cho ví dụ của mình.

Để được cụ thể.

  1. Nhập dịch vụ trong Windows
  2. Tìm MongoDB (hoặc dịch vụ bạn muốn thay đổi) và mở dịch vụ, đảm bảo dừng dịch vụ đó.
  3. Ghi lại tên dịch vụ (không phải tên hiển thị)
  4. Tra cứu và sao chép "Đường dẫn đến thực thi" và sao chép nó.

Đối với tôi đường dẫn là (lưu ý các dấu hiệu lời nói)

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

Trong một loại dòng lệnh

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

Trong trường hợp của tôi, đây là

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

Bạn có thể xóa dịch vụ:

sc delete ServiceName

Sau đó tạo lại dịch vụ.


3
Không cần phải làm điều này, có ít nhất 3 cách tốt hơn để làm điều này
Liam

-2

Sâu hơn một chút với lệnh 'SC', chúng tôi có thể trích xuất tất cả 'Tên dịch vụ' và nhận được tất cả '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]

Thực hiện chỉnh sửa 'nhỏ' NOTEPAD2 .. Chọn 'SERVICE_NAME:', CTRL + H, nhấp vào 'Thay thế tất cả' Hãy tưởng tượng rằng chúng ta có thể thực hiện 'Thay thế tất cả' trong 'CMD'

Sau đó, tiếp tục với '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]

đó là 'DỊCH VỤ trên máy của chúng tôi' Dữ liệu thô đã sẵn sàng để cung cấp 'tệp bó trong tương lai', vì vậy kết quả trông như thế này bên dưới !!!

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

Nhưng, HTML sẽ dễ dàng hơn: D

Bất kỳ ý tưởng sáng giá để cải thiện đều được chào đón V ^ _ ^


Hoặc sử dụng scrất nhiều, dễ dàng hơn và ít thích vặn vít hơn.
Liam
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.