74 votes

Comment changer le chemin de l'exécutable d'un service Windows ?

Je veux modifier le chemin d'accès à l'exécutable d'un service à partir de la ligne de commande.

Comment puis-je faire ça ?

Je veux exécuter un autre .EXE à partir du chemin d'accès à l'exécutable de ce service.

97voto

Vous pouvez utiliser le sc config pour modifier le chemin vers lequel un service pointe :

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

Cela va mettre à jour le service appelé YourServiceName et changez l'entrée "Path to Executable" en C:\SomeDirectory\YourFile.EXE . Vous voudrez ensuite redémarrer votre service, ce que vous pouvez faire avec :

NET STOP YourServiceName & NET START YourServiceName

20voto

ChrisF Points 74295

Vous devrez le faire dans le registre :

HKEY_LOCAL_MACHINE \SYSTEM\CurrentControlSet\Services

Naviguez jusqu'au service, puis modifiez le nom de l'image pour refléter le nouveau chemin d'accès

Comme toujours, faites une sauvegarde du système AVANT.

6voto

La réponse fournie ci-dessus fonctionne très bien, je ne peux pas y répondre, mais pour compléter, au cas où vous auriez besoin d'avoir des guillemets ou d'autres arguments dans le chemin, disons pour corriger une vulnérabilité de chemin sans guillemets dans le registre, comme un chemin d'image, vous pouvez faire ce qui suit de CMD en tant qu'administrateur :

(par exemple, pour C:\Program Fichiers (x86) \YourService\YourProcess.exe )

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

vous pouvez faire ce qui suit à partir de powershell en tant qu'administrateur :

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

Vous obtiendrez le résultat suivant :

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

...les arguments sanglants et les paramètres d'échappement sont un cauchemar ! J'espère que cela aidera quelqu'un à l'avenir.

3voto

Clayton Dittman Points 39

Vous pouvez également le faire avec 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")

Oder:

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

0voto

Codemaker Points 101

Vous ne pouvez pas modifier directement votre chemin d'accès à l'exécution d'un service. Pour cela, vous pouvez utiliser la commande sc,

Ouvrez votre invite de commande en tant qu'administrateur puis tapez la commande suivante,

SC CONFIG ServiceName binPath= "Path of your file"

Eg :

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

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X