0

我想知道,当我们以编程方式从另一个应用程序启动和停止 win 服务时,我如何以编程方式将一些参数传递给 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;
}
4

2 回答 2

4

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

于 2013-09-03T11:56:01.873 回答
-3

好的,

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

我的猜测是:

  1. 停止服务(启动 c:\program.exe "Param A")
  2. 删除服务。
  3. 添加服务(启动 c:\program.exe "Param B")
  4. 启动服务。

但是,我建议通过使用数据库连接、资源文件(通常的路径)将参数(或变量)导入应用程序。

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

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

于 2013-09-03T11:46:54.147 回答