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

50

Eu quero mudar o caminho para o executável para um serviço a partir da linha de comando.

Como posso fazer isso?

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

    
por sam 15.12.2010 / 07:24

5 respostas

64

Você pode usar o comando sc config 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 YourServiceName e alterará a entrada "Caminho para Executável" para C:\SomeDirectory\YourFile.EXE . Você vai querer reiniciar seu serviço depois, o que você pode fazer com:

NET STOP YourServiceName & NET START YourServiceName
    
por 03.03.2011 / 21:35
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.

    
por 15.12.2010 / 21:21
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"
    
por 13.08.2015 / 07:10
1

A resposta fornecida acima funciona muito bem, não consigo respondê-la, mas para adicionar, caso você precise ter citações ou outros argumentos no caminho, digamos para corrigir uma vulnerabilidade de caminho sem aspas no registro, como um imagepath, você pode fazer o seguinte do 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 que escapam são um pesadelo! Espero que isso ajude alguém no futuro.

    
por 27.07.2017 / 23:40
0

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

Abra o 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"
    
por 14.08.2018 / 11:29