web-dev-qa-db-fra.com

Modification du "chemin d'accès à l'exécutable" d'un service Windows

J'aimerais modifier le chemin d'accès à mon application, mais cela le casse car le service pointe toujours vers l'ancien emplacement. 

En allant à Administrative Tools > Services, vous pouvez ouvrir une boîte de dialogue de propriétés et afficher le Path to executable, mais vous ne pouvez pas le modifier. 

Existe-t-il un moyen pour un utilisateur de modifier le chemin de service sans avoir à réinstaller l'application?

223
GenericJon

Il y a aussi cette approche vue sur SuperUser qui utilise la ligne de commande sc au lieu de modifier le registre:

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

Remarque: l'espace après binPath= est important. Vous pouvez également interroger la configuration actuelle en utilisant:

sc qc <service name>

Cela affiche une sortie similaire à:

[SC] SUCCÈS DE QueryServiceConfig

SERVICE_NAME: Nom du service

    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
205
Niall Connaughton

Cela implique la modification du registre, mais les informations sur le service peuvent être trouvées dans HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services. Recherchez le service que vous souhaitez rediriger, localisez la sous-clé ImagePath et modifiez cette valeur.

279
Matt McHugh

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")

Ou:

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

Ouvrez Run (win + R), tapez "Regedit.exe", pour ouvrir "Registry Editor", allez à 

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services

trouver " Apache2.4 " ouvrir le dossier trouver le " ImagePath " dans le côté droit, ouvrir "ImagePath" sous " value Data ", indiquez le chemin suivant:

"C:\xampp\Apache\bin\httpd.exe" -k runservice foe XAMPP pour d'autres pointent vers l'emplacement d'installation d'Apache et localisent le dossier bin "C: (emplacement d'installation d'Apache)\bin\httpd.exe "-k runservice

2
Antony Joseph

Vous ne pouvez pas éditer directement votre chemin pour exécuter un service. Pour cela, vous pouvez utiliser la commande sc,

SC CONFIG ServiceName binPath= "Path of your file"

Par exemple:

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