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. サービスを開始します。

ただし、通常のルートである DB 接続、リソース ファイルを使用して、パラメーター (または変数) をアプリケーションに取得することをお勧めします。

もちろん、config.ini ファイルをパラメーターとして使用し、このファイルを編集して (サービスを停止したら)、両方のパスを組み合わせることができます。

アプリケーションは、処理できる引数の配列を受け取ります

于 2013-09-03T11:46:54.147 に答える