C#異なるパラメーターで同じWindowsサービスを登録する
-
10-10-2019 - |
質問
多くのWindowsサービスを作成して、多くのWCFサービスをホストして、1つ(たとえば更新する)を停止し、もう1つを実行し続けることができるようにする必要があります。
私が持っているすべてのWCFサービスのWindowsサービスを作成したくないので、Windowsサービスとして登録できるC#アプリケーションを作成しようとしていますが、さまざまなパラメーター(およびもちろんサービス名)があります。
たとえば、このように呼びます:
MyService.exe /install WcfService1.dll
MyService.exe /install WcfService2.dll
これにより、次のような2つの異なるWindowsサービスが作成されます。
WcfService1 -> MyService.exe /run WcfService1.dll
WcfService2 -> MyService.exe /run WcfService2.dll
レジストリを直接編集する以外に、これを行う方法が見つかりません。
解決
私はそれをするより良い方法を見つけました:sc.exe
sc.exe create WcfService1 binPath= "MyService.exe /run WcfService1.dll"
したがって、このコマンドを起動するには、BAT/CMDを作成する必要があります。
他のヒント
その性質上、サービスは特定のものに対処するための頼りになるプロセスになるように設計されており、複数のインスタンスを持つことは一般的に良い考えではありません。しかし、あなたが望むことをすることは可能です。たとえば、SQL Serverの複数のインスタンスを一度に実行することができます。
読んでください これ. 。基本的に、サービスインストーラーには、サービスとしてWindowsに登録する名前を伝えるコマンドラインまたはその他の構成可能な引数を与えることができます。これは通常、サービスインストーラーとサービス実行可能ファイルのプロパティに基づいて自動的ですが、これらすべても動的に設定できます。名前を変更すると、サービス登録が変更されます。サービスの名前は(AFAIK)サービスとして実行されることで検査できる必要があります。これにより、責任があるWCFサービスがわかります。