2016-04-29 8 views
6

Ho provato System.ServiceProcess.ServiceController System.Diagnostics.Process;Come arrestare o avviare il servizio di Windows in C# mvc?

per controllare i servizi di Windows nel mio modulo web. con System.ServiceProcess.ServiceController Ricevo l'eccezione di accesso negato.

Con System.Diagnostics.Process Non ottengo nulla. Come posso avviare/fermare i Servizi Windows con il mio modulo Web, qualche idea?

+4

per controllare i servizi, è necessario eseguire con autorizzazioni elevate. Un'applicazione web non lo fa per impostazione predefinita. – Knelis

+0

come posso ottenere questi permessi? –

+1

Se ricordo che era impostato impostando l'identità del pool di applicazioni sul sistema (o su un livello utente meglio pianificato). I – Matthew

risposta

2

Knelis è corretto, penso che sia necessario un altro processo per farlo. Forse il tuo servizio Windows, che funziona con il sistema locale, e fornisce un servizio wcf per controllare il servizio Windows, e la tua app web può chiamare il servizio wcf.

+0

Sì, disaccoppiare i due è la soluzione migliore. Questa è la migliore opzione per quanto riguarda la sicurezza. –

+1

E a seconda del pubblico desiderato, assicurarsi di autorizzare i servizi che è possibile avviare o interrompere. – CodeCaster

+1

@AlicanUzun Questa è una buona soluzione.Questo esempio illustra il tutorial del servizio WCF https://msdn.microsoft.com/en-us/library/ms733069%28v=vs.110%29.aspx e converte il tutorial in servizi di controllo windows e quindi accedi a quel servizio con la tua applicazione web – Elshan

4

Ecco i punti importanti da compiere:

1 è necessario aggiungere di riferimento System.ServiceProcess nell'applicazione. Questo spazio nomi detiene la classe ServiceController per accedere al servizio finestra.

2 È necessario verificare lo stato dei servizi della finestra prima di avviare o arrestare esplicitamente .

3 Per impostazione predefinita, l'applicazione IIS viene eseguita con un account ASP.NET che non dispone dell'autorizzazione per i diritti di accesso al servizio di finestra . Quindi, Molto Parte importante della soluzione è: Impersonificazione. È necessario impersonare l'applicazione/parte del codice con le credenziali utente che dispone dei diritti e dell'autorizzazione necessari per accedere al servizio della finestra.

consultare questo blog da asp.net E guarda anche questo https://stackoverflow.com/a/17497084/1641556

+2

Questa soluzione richiede l'autenticazione di Windows sul tuo sito. Se va bene, questa è una soluzione decente e sicura. –

+0

come implementare l'autenticazione di Windows sul sito? puoi spiegare questo? –

+0

@AlicanUzun controlla questo tutorial http://www.codeproject.com/KB/cs/svcmgr.aspx?display=Print – Elshan

Problemi correlati