2012-06-12 87 views
5

我有一個在幾個實例中在系統中運行的服務。我需要找到服務的服務DISPLAY_NAME。我試過ServiceBase.ServiceName,但它返回(可能)項目安裝程序的服務名稱,至少在這種情況下是無用的。如何在.net中查找服務的「顯示名稱」?

該服務由installutil安裝,參數爲/name=

編輯

我有一個基於伊姆蘭Balouch答案一種解決方法。我在安裝程序Me.Context.Parameters("name")中讀取了該名稱,並將其寫入ImagePath註冊表子項,並使用Environment.GetCommandLineArgs在服務中讀取該名稱。

回答

4

您是否在您的Windows服務項目中添加了ProjectInstaller?如果是,則在ProjectInstaller中爲您的服務添加ServiceInstaller,並在該ServiceInstaller中指定服務的顯示名稱。選擇的ServiceInstaller和性能設置其Display Name或在ProjectInstaller.Designer.csInitializeComponentProjectInstaller.Designer.vb你可以指定顯示名稱:

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

該服務由具有指定名稱的installutil安裝。 – IvanH

+0

但是你會在你的windows服務項目中添加一個projectinstaller,不是嗎? –

+1

是的,有一個MultiProjectInstaller.vb。所以一些解決方案是讀取/名稱(如果可能並設置它)。 – IvanH

2

你可以得到一個服務的顯示名稱,賦予其短服務名稱,使用ServiceController類:

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

正如你所說,你可以得到ServiceName容易,因爲它是你自己的類中的一員,從ServiceBase繼承。對於在同一臺機器上運行的服務的不同實例,此服務名稱將爲,因爲它是唯一標識符,所以它的不同名稱爲

+1

它停止與錯誤「的參數名稱值無效。」當我指定正確的名字,但它是我正在尋找的作品。 – IvanH

相關問題