Webサービスを提供する単一のexeを展開し、それを複数回(それぞれ個別のWindowsサービスとして)開始できるようにしたい。exeの各インスタンスは、異なる構成ファイルをロードできる必要があります(たとえば、異なるポートでリッスンしたり、異なるデータベースを使用したりできるようにするため)。
理想的には、exeを複数のフォルダーにインストールする必要はなく、複数の構成ファイルを用意するだけです。
ただし、Windowsが開始しているサービス名を見つける方法はないようです。
WindowsサービスがそのServiceNameをどのように判別できるかを見てきました 。 しかし、起動時に開始されるサービスのプロセスIDが0であるため、私にはうまくいかないようです。
質問が早すぎるか何かだと思います。私のコードは次のことを行います。
Mainは現在のディレクトリを設定し、WebServiceオブジェクト(ServiceBaseのサブクラス)を構築します
WebServiceオブジェクトコンストラクターは、ServiceNameプロパティを設定する必要があり、WindowsサービスがServiceNameを判別する方法のコードを使用します。正しい名前を見つけようとします。ただし、この時点では、正しいサービス名のプロセスIDはまだ0です。
これに続いて、MainはWebServiceオブジェクトを含む(1)ServiceBaseの配列を構築し、その配列でServiceBase.Runを呼び出します。サービス名は、サービスの実行後に変更されない可能性があるため、この時点で正しい必要があります。