如何在.net中找到服务的“显示名称”?

时间:2012-06-12 11:36:22

标签: c# .net vb.net windows-services

我有一个在多个实例中在系统中运行的服务。我需要从服务中找到DISPLAY_NAME服务。我已经尝试了ServiceBase.ServiceName但它返回(可能)来自项目安装程序的服务名称,至少在这种情况下是无用的。

该服务由installutil安装,参数为/name=

修改

我有一个基于Imran Balouch答案的解决方法。我在安装程序Me.Context.Parameters("name")中读取了该名称,并将其写入ImagePath注册表子项,并在服务中使用Environment.GetCommandLineArgs读取它。

2 个答案:

答案 0 :(得分:4)

您是否在Windows服务项目中添加了ProjectInstaller?如果是,则在ProjectInstaller中为服务添加ServiceInstaller,在该ServiceInstaller中,您可以指定服务的显示名称。选择该serviceinstaller,在属性设置为Display NameInitializeComponent ProjectInstaller.Designer.csProjectInstaller.Designer.vb中,您可以将显示名称指定为:

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

答案 1 :(得分:3)

使用ServiceController类,您可以获得服务的显示名称,因为它的服务名称较短:

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

正如你所说,你可以轻松地获得ServiceName,因为它是你自己班级的一员,继承自ServiceBase。对于在同一台计算机上运行的不同服务实例,此服务名称将不同,因为它是唯一标识符。