it-swarm.com.de

Ändern des "Pfads zur ausführbaren Datei" eines Windows-Dienstes

Ich möchte den Pfad zu meiner Anwendung ändern, aber dadurch wird der Pfad unterbrochen, da der Dienst immer noch auf den alten Speicherort verweist. 

Über Administrative Tools > Services können Sie ein Eigenschaftendialogfeld öffnen und Path to executable anzeigen. Es ist jedoch nicht möglich, es zu ändern. 

Gibt es eine Möglichkeit, dass ein Benutzer den Servicepfad ändern kann, ohne die Anwendung neu installieren zu müssen?

223
GenericJon

Es gibt auch diesen Ansatz bei SuperUser , der die sc-Befehlszeile verwendet, anstatt die Registrierung zu ändern:

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

Hinweis: Das Leerzeichen nach binPath= ist wichtig. Sie können die aktuelle Konfiguration auch abfragen mit:

sc qc <service name>

Dies zeigt eine Ausgabe ähnlich wie:

[SC] QueryServiceConfig ERFOLGREICH

SERVICE_NAME: ServiceName

    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 : [email protected]
205

Es umfasst das Bearbeiten der Registrierung, Dienstinformationen finden Sie jedoch in HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services. Suchen Sie den Dienst, den Sie umleiten möchten, suchen Sie den Unterschlüssel ImagePath und ändern Sie diesen Wert.

279
Matt McHugh

Sie können es auch mit PowerShell tun:

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"
10
Greg Sansom

Öffnen Sie Ausführen (win + R), geben Sie "Regedit.exe" ein, um den "Registrierungseditor" zu öffnen, gehen Sie zu 

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services

find " Apache2.4 " öffne den Ordner Suche " ImagePath " auf der rechten Seite, öffne "ImagePath" unter " value Data " füge folgenden Pfad ein:

"C:\xampp\Apache\bin\httpd.exe" -k runservice foe XAMPP für andere verweist auf den Speicherort, an dem Apache installiert ist. Suchen Sie im Bin-Ordner "C: (Apache installierter Speicherort)\bin\httpd.exe "-k runservice

2
Antony Joseph

Sie können Ihren Pfad für die Ausführung eines Dienstes nicht direkt bearbeiten. Dafür können Sie den Befehl sc verwenden,

SC CONFIG ServiceName binPath= "Path of your file"

Z.B:

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