2014-05-18 13 views
6

Ho un'app nodoJS che comunica con un'applicazione di terze parti installata come servizio Windows. La mia applicazione nodeJS richiede che questo servizio sia in esecuzione, tuttavia in alcune circostanze potrebbe non funzionare.Node js start e stop windows services

Sto cercando di cercare un metodo per verificare se questo servizio di Windows è in esecuzione e se non avviarlo. Dopo molti giorni di ricerca ho trovato molti risultati per l'esecuzione di un'applicazione nodeJS come servizio Windows, ma non per la possibilità di avviare/interrompere i servizi Windows già installati.

È possibile? Ho trovato strumenti come PSEXEC in modo che potessi fare in modo che nodeJS eseguisse tale script ma sarebbe preferibile se nodeJS potesse eseguire questa attività in modo nativo.

Qualsiasi informazione a tal fine sarebbe molto utile e trovo difficile credere che gli altri non si siano trovati in una situazione in cui hanno anche dovuto farlo.

Stephen

risposta

3

In Windows, da una riga di comando è possibile digitare:

# Start a service 
net start <servicename> 

# Stop a service 
net stop <servicename> 

# You can also pause and continue 

Quindi, la risposta è semplice - utilizzare bambino-processo per avviare il servizio all'avvio del server. Qualcosa di simile a questo:

var child = require('child_process').exec('net start <service>', function (error, stdout, stderr) { 
    if (error !== null) { 
     console.log('exec error: ' + error); 
    } 
    // Validate stdout/stderr to see if service is already running 
    // perhaps. 
}); 

EDIT: Ho trovato anche questo nodejs modulo chiamato "windows-service". Sembra promettente per quello che stai cercando di fare. Alcune delle sue funzionalità sono implementate in C++ dove tenta di interrogare Windows Service Manager.

+0

Spot on, l'utilizzo del processo figlio ha funzionato molto bene. – ste2425