2012-06-12 8 views
5

Ho un servizio che è in esecuzione in un sistema in diverse istanze. Devo trovare DISPLAY_NAME del servizio dal servizio. Ho provato ServiceBase.ServiceName ma restituisce (probabilmente) il nome del servizio dal programma di installazione del progetto, che è almeno in questo caso inutile.Come trovare "Nome visualizzato" di un servizio in .net?

Il servizio viene installato da installutil con un parametro /name=.

Modifica

Ho una soluzione basata su Imran Balouch risposta. Ho letto il nome nell'installer Me.Context.Parameters("name") e lo scrivo nella sottochiave del registro ImagePath e lo leggo con Environment.GetCommandLineArgs in un servizio.

risposta

4

Hai aggiunto ProjectInstaller nel progetto di servizio di Windows? Se si, in ProjectInstaller si aggiunge ServiceInstaller per il proprio servizio e in quel ServiceInstaller è possibile specificare il nome visualizzato del servizio. Selezionare che ServiceInstaller e nelle proprietà impostare il Display Name o in InitializeComponent di ProjectInstaller.Designer.cs o ProjectInstaller.Designer.vb è possibile specificare il nome visualizzato come:

this.yourServiceInstaller.DisplayName = "Service Display Name"; 
+0

Il servizio è installato da installutil con nome specificato. – IvanH

+0

Ma avresti aggiunto un projectinstaller nel tuo progetto di servizio Windows, non è così? –

+1

Sì, c'è un MultiProjectInstaller.vb. Quindi una soluzione è leggere il/name (se possibile e impostarlo). – IvanH

2

È possibile ottenere il nome visualizzato di un servizio, data la sua breve ServiceName, utilizzando la classe ServiceController:

ServiceController sc = new ServiceController(this.ServiceName); 
var displayName = sc.DisplayName; 

Come hai detto, è possibile ottenere il ServiceName facilmente, in quanto è un membro della vostra propria classe, ereditato da ServiceBase. Il nome del servizio sarà diverso per diverse istanze dei servizi in esecuzione sulla stessa macchina, poiché si tratta di un identificativo univoco.

+1

Si arresta con un errore "Valore non valido per il nome del parametro." E funziona quando specificano il nome corretto ma è quello che sto cercando. – IvanH

Problemi correlati