如何将参数传递给Windows服务

时间:2010-11-24 21:42:06

标签: c# .net windows service

我正在尝试将参数传递给我的Windows服务,但OnStart方法中的args始终为空。

protected override void OnStart(string[] args)
        {
            System.Diagnostics.Debugger.Launch();
        }

我在同一台计算机上安装了多个服务实例。每个应该使用不同的配置,以便获取服务名称,并根据该读取正确的配置。

3 个答案:

答案 0 :(得分:1)

您是否通过服务小程序传递参数?服务不能接受命令行参数,而必须通过“计算机管理”窗口中的服务小程序传递。

答案 1 :(得分:0)

如果您需要服务名称,为什么不只看ServiceBase.ServiceName

protected override void OnStart(string[] args)
{
    switch (this.ServiceName)
    {
        // ....
    }
}

您可能还想考虑一种不基于服务名称的设计,可以在系统内轻松更改。

答案 2 :(得分:0)

使用设置文件(右键单击,添加项目,设置),这将自动生成应用程序配置文件。然后在每个实例的bin中,您可以在配置中设置值 - 如果您在不同位置运行它们。

如果多个服务实例在一个位置运行,则配置文件方法不起作用。在这种情况下,我建议使用void main(string[] args)方法的常规exe,然后您可以在Windows中使用任务计划程序来定义参数和计划。