Como alterar o caminho para executável para um serviço do Windows?


55

Quero alterar o caminho para o executável de um serviço na linha de comando.

Como eu posso fazer isso?

Eu quero executar outro .exe do caminho desse serviço para executável.


Se a resposta de Dave não for o que você precisa, use o link "editar" para explicar um pouco mais.
Arjan

Respostas:


71

Você pode usar o sc configcomando para alterar o caminho para o qual um serviço aponta:

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

Isso atualizará o serviço chamado YourServiceNamee alterará a entrada "Caminho para o executável" para C:\SomeDirectory\YourFile.EXE. Você deseja reiniciar o serviço posteriormente, o que pode ser feito com:

NET STOP YourServiceName & NET START YourServiceName

Se você estiver movendo a configuração do MySQL (.ini) para outra unidade. Você pode deixar de fora as aspas internas. Apenas envolva toda a string modificada em um único par de aspas duplas. Movi minha pasta .ini e dados para a unidade D: no Win7.
precisa

11
E quando o Path to executabletambém contém aspas e outros parâmetros? Por exemplo: "C:\Program Files\CollabNet\Subversion Server\svnserve.exe" --service -r "E:\Repositories" --listen-port "3690"infelizmente tive que seguir a rota regedit para esta.
James Skemp

@ James - Eu tenho certeza que você pode escapar desses personagens, mas vou ter que brincar com ele e voltar para você.
LittleBobbyTables

6
Gostaria de observar que há um espaço necessário entre binpath = e o comando. Burro, eu sei.
Chloe

2
As aspas no binPath podem ser escapadas com barra invertida: \ "
gwyn 21/03

16

Você precisará fazer isso no registro:

HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services

Navegue até o serviço e modifique o nome da imagem para refletir o novo caminho

Como sempre, faça um backup do sistema antes.


Isso funcionou melhor para mim. O serviço que eu estava mudando tinha alguns argumentos complexos.
John Allers

2

Você também pode fazer isso com o 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")

Ou:

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

1

A resposta fornecida acima funciona muito bem, não posso respondê-la, mas, para adicionar, caso você precise de aspas ou outros argumentos no caminho, digamos para corrigir uma vulnerabilidade de caminho não citado no registro, como um caminho de imagem, você pode fazer o seguinte no CMD como administrador:

(por exemplo, para C: \ Arquivos de Programas (x86) \ YourService \ YourProcess.exe)

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

você pode fazer o seguinte no powershell como administrador:

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

Isso fornecerá o seguinte resultado:

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

... argumentos sangrentos e parâmetros de escape são um pesadelo! Espero que isso ajude alguém no futuro.


0

Você não pode editar diretamente o seu caminho para executar um serviço. Para isso você pode usar o comando sc,

Abra seu prompt de comando como administrador e digite o seguinte comando,

SC CONFIG ServiceName binPath= "Path of your file"

Por exemplo:

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

: - sua aparência é igual a LittleBobbyTables, se você puder detalhar a diferença, faça. Uma leitura de Como responder e tour são sempre bons de vez em quando.
mic84
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.