2010-04-05 20 views
8

Avevo creato un servizio di Windows in Visual Studio 2008 in C#. all'interno del servizio che avevo scritto solo il codice singola lineaIl servizio di Windows non funziona

try 
{ 
    System.Diagnostics.Process.Start(@"E:\Users\Sk\Desktop\category.txt"); 
} 
catch { } 

poi aggiungo il programma di installazione del progetto & modificare la proprietà serviceProcessInstaller1 account come sistema locale cambiarne anche l'inizio serviceInstaller1 proprietà tipo automatico. poi ho costruito il project.it ha avuto successo. dopo di che aggiungo un altro progetto che è stato impostato project.i ha aggiunto l'output primario del progetto & ho aggiunto l'azione personalizzata come "Output primario da DemoWindowsService (Active)" .costruito il setup.setup è stato compilato con successo.quindi installo il setup & poi è andato ai servizi avviare service.service dichiarato correttamente ma non stava eseguendo l'attività. Avevo controllato il percorso sia corretto & anche ho cercato di fare

System.Diagnostics.Process.Start(@"E:\Windows\system32\notepad.exe") ma ancora risultato è same.i provato un sacco, ma non ottenere la risposta.

+0

Dove hai scritto il codice che ha citato (in cui il metodo intendo)? Qual è il tuo obiettivo attuale? Perché vuoi semplicemente aprire il blocco note? Potresti spiegare per favore? –

risposta

2

Se non funziona, forse è perché è stata generata un'eccezione. Tuttavia, dal momento che stai nascondendo tutte le eccezioni con il tuo blocco try/catch, non saprai mai cosa c'è che non va.

Sbarazzarsi del blocco try/catch e vedere se questo ti aiuta a capire cosa c'è che non va.

+0

Giusto, stavo proprio per commentare su quel blocco vuoto. –

+0

@ prateeksaluja20: Inoltre, controlla 'eventvwr' per cosa non va. –

+0

@KMan: tranne il visualizzatore eventi non mostrerà nulla a causa del blocco catch! –

6

I servizi Windows non possono interagire con il desktop per impostazione predefinita e Blocco note è un'applicazione interattiva.

Se si apre Task Manager , ho il sospetto si vedrà il notepad.exe processo in esecuzione dopo aver iniziato il vostro servizio, e che il servizio sta facendo quello che si pensa, non è solo visibile.

È possibile modificare un servizio di interagire con il desktop facendo clic destro nelle snap-in (Start -> Run -> Services.msc), e controllando il Consenti al servizio di interagire tavolo opzione nella scheda Log On con MMC.

Basandosi su questa opzione è non consigliato, come Microsoft ha detto che lo rimuoverà nelle versioni successive di Windows.

Ha senso se ci si pensa, dal momento che un servizio di Windows è pensato per essere utilizzabile anche se nessuno è connesso al computer (ad esempio non c'è "desktop" con cui interagire).

+0

Grazie per la tua risposta. – PrateekSaluja

0

Hai scritto la tua singola riga di codice nel metodo OnStart() nel servizio? In caso affermativo, modificare il blocco catch su catch (Exception ex) e scrivere i dettagli dell'eccezione nel registro eventi per verificare il motivo dell'eccezione.

Vedi Logging Information About Services

Problemi correlati