如何使用参数创建Windows服务?

Sha*_*ica 14 c# windows-services

我编写了一个Windows服务,我希望每个客户运行一个实例.这是因为每个客户都有自己的DB具有相同的模式; Windows服务之间的唯一区别是,它们每个都有一个与他们被指定服务的客户数据库相对应的不同参数.(而且我不能拥有一个具有多个工作线程的服务,因为数据库连接使用静态变量,我无法通过线程进行操作.)

我找到了关于如何制作Windows服务的这个简洁的小教程,但它只告诉我如何为单个服务设置它.我想设置n个服务实例,每个实例都有一个包含客户名称的显示名称,并使用表示客户ID的命令行参数运行.

上面链接的教程有一个名为的类MyWindowsServiceInstaller,它在本地系统上安装Windows服务,我猜这是一个合理的地方,可以foreach通过我的所有客户设置一个循环,为每个客户设置一个服务.但我无法在提供的接口上看到任何可以让我为新服务设置命令行参数的地方.

你怎么做呢?

Ric*_*ton 15

我想要的只是将一个参数发送到我创建的服务.事实证明,您所要做的就是(小心!)在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services \中编辑注册表,并在引号后面的ImagePath中添加参数.

例如.ImagePath值数据:"C:\ Program Files\myservice\myservice.exe"param1

我在这个链接中找到了解决方案http://social.msdn.microsoft.com/Forums/is/csharpgeneral/thread/38242afa-7e40-4c06-975e-aa97d3cc782f


Jef*_*nal 9

Wil Peck撰写了一篇关于如何在一个盒子上安装多个Windows服务实例的文章.基本思想是你必须通过给安装程序提供不同的名称来诱骗安装程序认为它们是不同的服务.

话虽如此,重新设计数据库连接代码似乎更容易(也更易于维护),以便它可以支持多个工作线程.