Visual Studio.NETサービスのデバッグ

今度はVB.NETでWindowsサービスプログラムを作ろうとしていたりします。サービスとなると通常プログラムよりも表示や入力が制限される(基本的にやらない)ので、Visual Studio.NETのデバッガが利用できるのはかなり助かります。

Visual Studio.NETではサービスの作り方も楽になっていて、プロジェクトの種類にWindow applicationやDLLと並んでWindows Serviceなんてのが用意されているので、これを選びます。特集:初めて作る.NET Windowsサービス(ITmedia)Link なんかを参考にして、自動的に生成されるSystem.ServiceProcess.ServiceBaseのサブクラスのメソッドをコーディングするだけ。(まともに使えるサービスとなるといろいろ書く必要がありますが)

blog20070718VSdotNETServiceLogin

デバッグは通常プログラムとはちょっと異なります。blog.C#Link なんかを参考にしてますが、
  1. まずexeをビルド
  2. installutilコマンドでサービスとして登録
    • installutil.exeが通常パスの通ってないところにあります。スタートメニュー内のVisual Studioのツールフォルダにあるコマンドプロンプトを使うと、パスが通ってます
    • 管理者権限である必要があります。私の開発ユーザーIDはVS Developer+制限ユーザなので、上のコマンドプロンプトをAdministratorとして起動してます。
    • サービスの起動をUserに設定してた場合(Visual Studioプロジェクトのどこかで設定可能、忘れた;;)、ユーザーIDとパスワードを問われます。Windowsに登録してあるユーザーでいいのですが、ドメインを含めた[ドメイン]¥[ユーザー]で指定しないと登録に失敗します。ローカルマシンなら、.¥[ユーザー]で指定可能。
  3. コントロールパネルのサービスで、登録したサービスを起動
    • これも管理者権限でサービスマネージャを起動する必要があります。全体を通して管理者でやったほうがはるかに楽^^;
  4. exeをビルドしたプロジェクトを開き、ツールのプロセスにアタッチで起動したサービスを選択
    • これもVisual Studioを管理者権限で起動しておかないと、アタッチ後サービスへのアクセスが拒否されて、実質的にデバッグできません。結局管理者権限でやれということでしょうか? Visual StudioインストールするとVS Developerなんてユーザーグループ作るくらいだから、なんか別の方法がありそうですが・・・

これでデバッグ開始。ブレークポイントを設定しておけばそこで止まってくれます。デバッガーを止めるとサービスも止まってしまうので、またコントロールパネルで開始する必要があります。

— posted by mu at 08:38 pm   commentComment [0]  pingTrackBack [0]

T: Y: ALL: Online:
ThemeSwitch
  • Basic
Created in 0.0108 sec.
prev
2007.7
next
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31