Ich möchte den Pfad zur ausführbaren Datei für einen Dienst über die Befehlszeile ändern.
Wie kann ich das machen?
Ich möchte eine andere EXE-Datei vom Pfad dieses Dienstes zur ausführbaren Datei ausführen.
Ich möchte den Pfad zur ausführbaren Datei für einen Dienst über die Befehlszeile ändern.
Wie kann ich das machen?
Ich möchte eine andere EXE-Datei vom Pfad dieses Dienstes zur ausführbaren Datei ausführen.
Antworten:
Mit dem sc config
Befehl können Sie den Pfad ändern, auf den ein Dienst verweist:
SC CONFIG YourServiceName binPath= "C:\SomeDirectory\YourFile.EXE"
Dadurch wird der aufgerufene Dienst aktualisiert YourServiceName
und der Eintrag "Pfad zur ausführbaren Datei" in geändert C:\SomeDirectory\YourFile.EXE
. Anschließend möchten Sie Ihren Dienst neu starten. Dies können Sie tun mit:
NET STOP YourServiceName & NET START YourServiceName
Path to executable
auch Anführungszeichen und andere Parameter enthält? Zum Beispiel: "C:\Program Files\CollabNet\Subversion Server\svnserve.exe" --service -r "E:\Repositories" --listen-port "3690"
Ich musste leider den Regedit-Weg gehen.
Sie müssen das in der Registrierung tun:
HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services
Navigieren Sie zum Dienst und ändern Sie den Bildnamen, um den neuen Pfad wiederzugeben
Erstellen Sie wie immer eine Sicherungskopie des Systems PRIOR.
Sie können dies 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"
Die oben angegebene Antwort funktioniert hervorragend. Ich kann darauf nicht antworten, aber zusammenfassend kann man sagen, dass Sie, falls Sie Anführungszeichen oder andere Argumente im Pfad benötigen, um eine nicht zitierte Pfad-Sicherheitsanfälligkeit in der Registrierung zu beheben, wie z. B. einen Bildpfad kann von CMD aus als Administrator Folgendes tun :
(zB für C: \ Programme (x86) \ YourService \ YourProcess.exe)
SC CONFIG YourService binPath= "\"C:\Program Files (x86)\YourService\YourProcess.exe\"
Von Powershell aus können Sie als Administrator Folgendes tun :
SC.exe CONFIG YourService binPath= --% "\"C:\Program Files (x86)\YourService\YourProcess.exe\"
Diese geben Ihnen das folgende Ergebnis:
"C:\Program Files (x86)\YourService\YourProcess.exe"
... blutige Auseinandersetzungen und entkommene Parameter sind ein Albtraum! Hoffe das hilft jemandem in der Zukunft.
Sie können Ihren Pfad zur Ausführung eines Dienstes nicht direkt bearbeiten. Dafür können Sie sc Befehl verwenden,
Öffnen Sie Ihre Eingabeaufforderung als Administrator und geben Sie den folgenden Befehl ein:
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"