.NET Framework 2.0に関する質問です。


VB.NET2005 で、Windowsサービスアプリケーション(WEBでなくEXEのもの)を開発しています。
このサービスは、同じ実行モジュールについてサービス名を分けて登録することを考えています。
(例)コマンドラインから
sc create SVC1 binPath= C:\MODULE.EXE
sc create SVC2 binPath= C:\MODULE.EXE
sc create SVC3 binPath= C:\MODULE.EXE

OnStart()内で、それぞれ自分の登録されたサービス名を取得してきたいのですが(上記の例ですとSVC1 SVC2 SVC3)、
ServiceBase.ServiceNameからは、どのサービスインスタンスにおいても開発時に登録した便宜的な固定のサービス名が入っておりました。
sc createで登録した実際のサービス名(=レジストリのHKLM\SYSTEM\CurrentControlSet\Services内にできるキー名)
を得る方法をご存知の方、是非ご教示ください。

回答の条件
  • 1人3回まで
  • 登録:
  • 終了:2007/12/05 00:34:34
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:ardarim No.2

回答回数897ベストアンサー獲得回数145

ポイント60pt

こちらで全く同じ内容の議論がありましたが、結論としては「無理」ということのようです。

How to get the ServiceName(英語)

With SC I can register my service multiple times, ex:
    sc.exe create ServiceName1 binPath= D:\myservice.exe
    sc.exe create ServiceName2 binPath= D:\myservice.exe

When I start the service "ServiceName1" I would like it to find it's 
parameters in 
HKLM\SYSTEM\CurrentControlSet\Services\ServiceName1\Parameters.
This way I can register my service as many time I want to, and still each 
instance can have it's own configuration.

代替策として

  • 引数にもサービス名を渡す
  • 同じexeでも、格納するディレクトリを分けてパスで区別する

が挙げられています。

id:HISI

有難う御座います。

無理でしたか...確かに数年前のプロジェクトでサービスを利用したモジュールに

わざわざ手でレジストリを書き換えて(NT4でしたから、scコマンドはありませんでした)識別情報を渡していたことを思い出しました。

2007/12/05 00:32:11

その他の回答1件)

id:thrillseeker No.1

回答回数328ベストアンサー獲得回数37

ポイント60pt
sc create SVC1 binPath="C:\MODULE.EXE SVC1"

のようにサービス名をコマンドライン引数で渡すようにしてはだめですか?

http://www.atmarkit.co.jp/fdotnet/dotnettips/030cmdargs/cmdargs....

id:HISI

有難う御座います。

最初この方法でやっていたのですが、

サービス名ずばりを取得できたらもっとシンプルになると思いまして、ちょっと質問してみました。

2007/12/05 00:29:17
id:ardarim No.2

回答回数897ベストアンサー獲得回数145ここでベストアンサー

ポイント60pt

こちらで全く同じ内容の議論がありましたが、結論としては「無理」ということのようです。

How to get the ServiceName(英語)

With SC I can register my service multiple times, ex:
    sc.exe create ServiceName1 binPath= D:\myservice.exe
    sc.exe create ServiceName2 binPath= D:\myservice.exe

When I start the service "ServiceName1" I would like it to find it's 
parameters in 
HKLM\SYSTEM\CurrentControlSet\Services\ServiceName1\Parameters.
This way I can register my service as many time I want to, and still each 
instance can have it's own configuration.

代替策として

  • 引数にもサービス名を渡す
  • 同じexeでも、格納するディレクトリを分けてパスで区別する

が挙げられています。

id:HISI

有難う御座います。

無理でしたか...確かに数年前のプロジェクトでサービスを利用したモジュールに

わざわざ手でレジストリを書き換えて(NT4でしたから、scコマンドはありませんでした)識別情報を渡していたことを思い出しました。

2007/12/05 00:32:11

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません