我用 C# 编写了一个 Windows 服务。一开始的要求是我应该只运行该服务的一个实例,但情况已经改变,现在我需要多个实例。这就是为什么我需要根据配置文件更改服务名称。
用正确的名称注册的最佳方法是什么?我应该写另一个工具来做吗?我可以只从 App.config 文件中读取名称并相应地在服务和安装程序类中设置它吗?
PS> 我真的不明白那个有名字的东西是如何工作的——应该在服务和安装程序类中设置名称,但是当使用 installutil.exe 甚至 powershell new-service 安装时,也应该指定名称。那必须一样吗?或者一个覆盖另一个?
最佳答案
您可以简单地从 app.config 中读取它并在安装程序类中进行设置。
通常,会自动创建一个继承自 Installer
的类。它包含类型为 System.ServiceProcess.ServiceInstaller
的成员,很可能名为 serviceProcessInstaller1
。这有一个属性 ServiceName
你可以设置。此外,您需要设置 ServiceName
ServiceBase
派生类的属性设置为相同的值。
在默认实现中,这些在各自的 InitializeComponent
方法中设置为常量值,但没有理由坚持这一点。它可以毫无问题地动态完成。
关于c# - Windows 服务 - 如何使名称可配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6043663/