人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

.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内にできるキー名)
を得る方法をご存知の方、是非ご教示ください。


●質問者: pkb_wn
●カテゴリ:コンピュータ
✍キーワード:.NET Framework 2.0 exe MODULE SC
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

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

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

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

◎質問者からの返答

有難う御座います。

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

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


2 ● ardarim
●60ポイント ベストアンサー

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

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.

代替策として

が挙げられています。

◎質問者からの返答

有難う御座います。

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

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ