Як змінити шлях до виконуваного файлу для служби Windows?


55

Я хочу змінити шлях до виконуваного файлу для служби з командного рядка.

Як я можу це зробити?

Я хочу запустити інший .EXE зі шляху цієї служби до виконуваного файлу.


Якщо відповідь Дейва - це не те, що вам потрібно, то, будь ласка, скористайтеся посиланням "редагувати", щоб пояснити трохи більше?
Ар’ян

Відповіді:


70

За допомогою sc configкоманди можна змінити шлях, на який вказує служба:

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

Це оновить виклик служби YourServiceNameта змінить запис "Шлях до виконуваного" C:\SomeDirectory\YourFile.EXE. Ви хочете після цього перезапустити службу, що можна зробити з:

NET STOP YourServiceName & NET START YourServiceName

Якщо ви переміщуєте конфігурацію MySQL (.ini) на інший диск. Ви можете залишити внутрішні цитати. Просто загортайте всю модифіковану рядок в одну пару подвійних лапок. Перемістив мою .ini та папку даних у D: диск на Win7.
Брайан Бутрійт

1
Що робити, коли Path to executableтакож містять лапки та інші параметри? Наприклад: "C:\Program Files\CollabNet\Subversion Server\svnserve.exe" --service -r "E:\Repositories" --listen-port "3690"мені на жаль довелося пройти маршрут regedit для цього.
Джеймс Скемп

@James - Я впевнений, що ти можеш уникнути цих персонажів, але мені доведеться пограти з цим і повернутися до тебе.
LittleBobbyTables

6
Хочемо зазначити, що між binpath = та командою потрібний пробіл. Дурний, я знаю.
Хлоя

2
Цитати в binPath можна уникнути зворотною косою рисою: \ "
gwyn

16

Вам потрібно буде це зробити в реєстрі:

HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services

Перейдіть до служби, а потім змініть ім'я зображення, щоб відобразити новий шлях

Як завжди, зробіть резервну копію системи PRIOR.


Це працювало краще для мене. Служба, яку я міняв, мала деякі складні аргументи.
Джон Аллерс

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

Надана вище відповідь чудово працює, я не можу відповісти на неї, але щоб додати, якщо вам потрібні цитати чи інші аргументи на шляху, скажіть, щоб виправити незареєстровану вразливість шляху в реєстрі, як, наприклад, зображення, може виконати наступні дії від CMD як адміністратора:

(наприклад, для C: \ Program Files (x86) \ YourService \ YourProcess.exe)

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

Ви можете виконати наступні дії із Powerhell як адміністратора:

 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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.