Come modificare il percorso dell'eseguibile per un servizio Windows?


55

Voglio cambiare il percorso dell'eseguibile per un servizio dalla riga di comando.

Come posso fare ciò?

Voglio eseguire un altro .EXE dal percorso del servizio all'eseguibile.


Se la risposta di Dave non è ciò di cui hai bisogno, utilizza il link "modifica" per spiegare un po 'di più?
Arjan,

Risposte:


71

È possibile utilizzare il sc configcomando per modificare il percorso a cui punta un servizio:

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

Ciò aggiornerà il servizio chiamato YourServiceNamee modificherà la voce "Percorso eseguibile" in C:\SomeDirectory\YourFile.EXE. In seguito, dovrai riavviare il servizio, cosa che puoi fare con:

NET STOP YourServiceName & NET START YourServiceName

Se stai spostando MySQL config (.ini) su un'altra unità. Puoi tralasciare le virgolette interne. Basta avvolgere l'intera stringa modificata in una singola coppia di virgolette doppie. Ho spostato la mia cartella .ini e dati su D: drive su Win7.
Brian Boatright,

1
Che dire quando Path to executablecontengono anche virgolette e altri parametri? Ad esempio: "C:\Program Files\CollabNet\Subversion Server\svnserve.exe" --service -r "E:\Repositories" --listen-port "3690"purtroppo ho dovuto seguire la rotta regedit per questo.
James Skemp,

@James - Sono abbastanza sicuro che puoi sfuggire a quei personaggi, ma dovrò giocarci attorno e tornare da te.
LittleBobbyTabella

6
Vorrei notare che c'è uno spazio richiesto tra binpath = e il comando. Scemo, lo so.
Chloe,

2
Le citazioni in binPath possono essere evase con la barra rovesciata: \ "
gwyn

16

Dovrai farlo nel registro:

HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services

Passare al servizio, quindi modificare il nome dell'immagine per riflettere il nuovo percorso

Come sempre, eseguire un backup del sistema PRIOR.


Questo ha funzionato meglio per me. Il servizio che stavo cambiando aveva alcuni argomenti complessi.
John Allers,

2

Potresti anche farlo con 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")

O:

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

1

La risposta fornita sopra funziona alla grande, non posso rispondervi, ma per aggiungere, nel caso abbiate bisogno di virgolette o altri argomenti nel percorso, dite di correggere una vulnerabilità del percorso non quotata nel registro, come un percorso di immagine, voi può eseguire le seguenti operazioni da CMD come amministratore:

(ad es. per C: \ Programmi (x86) \ YourService \ YourProcess.exe)

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

puoi eseguire le seguenti operazioni da PowerShell come amministratore:

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

Questi ti daranno il seguente risultato:

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

... discussioni insanguinate e parametri di fuga sono un incubo! Spero che questo aiuti qualcuno in futuro.


0

Non è possibile modificare direttamente il percorso per eseguire un servizio. Per questo puoi usare il comando sc,

Apri il prompt dei comandi come amministratore, quindi digita il comando seguente,

SC CONFIG ServiceName binPath= "Path of your file"

Per esempio:

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

: - il tuo aspetto è lo stesso di LittleBobbyTables, se puoi dettagliare la differenza per favore fallo. Una lettura di Come rispondere e il tour sono sempre buoni di tanto in tanto.
mic84,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.