如何以编程方式运行时将一些参数传递给Windows服务

时间:2013-09-03 11:24:25

标签: c# windows-services

我想知道我们什么时候开始&从其他应用程序以编程方式停止赢取服务然后我如何以编程方式将一些参数传递给Windows服务....是否可能。

这是我用来以编程方式启动服务的示例代码。

private const int RestartTimeout = 10000;

private readonly ServiceController service;

public Control(string serviceName, string computerName)
{
    service = new ServiceController(serviceName, computerName);
}

public Control(string serviceName)
{
    service = new ServiceController(serviceName);
}

public bool StartService()
{
    try
    {
        service.Refresh();

        if (service.Status == ServiceControllerStatus.Stopped)
        {
            service.Start();
            return true;
        }

        MessageBox.Show(string.Format("{0} --> already started", service.DisplayName));
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.ToString(), @"Error Starting Service");
    }

    return false;
}

2 个答案:

答案 0 :(得分:4)

ServiceController.Start()方法有一个重载,它接受一个可以进一步实现的参数的字符串数组。见http://msdn.microsoft.com/en-us/library/9c38b683.aspx

答案 1 :(得分:-3)

好,

我认为这是可能的,但是,我认为它只能以不同的方式完成,因为ServiceController(和一般的Windows服务)不接受参数。

我的猜测是:

  1. 停止服务(启动c:\ program.exe“Param A”)
  2. 删除服务。
  3. 添加服务(启动c:\ program.exe“Param B”)
  4. 开始服务。
  5. 但是,我建议使用数据库连接,资源文件 - 通常的路径将参数(或变量)放入应用程序。

    Ofcouse,您可以将两个路径组合在一起,使用config.ini文件作为参数并编辑此文件(一旦停止服务)。

    您的应用程序将收到一组您可以处理的参数