以前は、面倒な手順が必要だったWindows サービス プログラムを作成する方法も、 .NET Framework と 対応開発環境の登場によって、かなりスマートに掛けるようになった。 MSDNなどを見れば、すぐに出来ると思うけど、簡単にサービス プログラムをビルド、インストールする手順を覚え書き。 ①Widnows サービス プロジェクトを作成する 新規プロジェクト作成のウィザードを開く。 プロジェクトの種類=『Visual C++』の『CLR』を選択し、『Windows サービス』を選択する。 プロジェクト名を入力して、『OK』ボタンをクリックして、プロジェクトを作成する。 ②サービスのプロパティを設定する ソリューションエクスプローラから、作成された XxxxxWinService.h をダブルクリックで開き(デザインビュー)、右クリックから「プロパティ」を選択。 プロパティページから、最低限以下の項目を設定する。 ServiceName - このサービスのサービス名 StartType - 自動/手動/無効など その他、必要なプロパティを変更する。 デフォルトでは、開始・終了ができる標準的なサービスの設定がされている。 ③インストーラを追加する デザインビューを右クリックして、『インストーラの追加』を選択する。 ProjectInstaller クラスが追加され、デザインビューに ServiceProcessInstaller と ServiceInstaller のインスタンスが追加される。 ④インストールの動作を変更する ServiceInstaller のインスタンス(serviceInstaller1)を選択し、プロパティーページを表示する。 ServiceName が、サービス自体のServiceName(XxxxxWinService.hのプロパティ)と一致している事を確認する。 サービス名を変更した場合は、ここも変更する必要がある。 ServiceProcessInstaller のインスタンス(serviceProcessInstaller1)を選択し、プロパティーページを表示する。 ここで、必要な設定を変更する。 Account - サービスを実行するアカウント ⑤処理内容を記述する XxxxxWinService.h のコードを表示して、OnStart() と OnStop() を編集して、サービスの開始・終了処理を記述する。 サービスは、一定時間以内に処理をサービスマネージャーに戻す必要があるので、ここでは、スレッドや外部プロセスの起動/終了処理のみを記述すること。 サービスが実際に行う処理は、他のスレッドや外部の実行ファイルに記述する。 ここで例外を発生させたりすると、サービスマネージャーから制御不能と怒られますので、注意が必要。 ⑥ビルドする ビルドして実行ファイルを作成します。 ⑦サービスをインストールする 作成したサービスは、自己インストールができるようになっているので、次のコマンドラインでインストールが可能。 Xxxx.exe /Install ⑧サービスを起動する サービスを起動するには、システムを再起動するか、つぎのコマンドを入力する。 net start "XxxxWinService" ここで、"XxxxWinService" はサービス名。 Windowsの管理ツールのServiceからも起動・終了ができる。 ⑨サービスを停止する サービスを停止するには、次のコマンドを入力する。 net stop "XxxxWinService" ここで、"XxxxWinService" はサービス名。 Windowsの管理ツールのサービスからも起動・終了ができる。 ⑩サービスをアンインストールする 作成したサービスは、自己アンインストールができるようになっているので、次のコマンドラインでアンインストールが可能。 Xxxx.exe /Install /u ⑪サービスで実行しているプログラムのウインドウを表示できるようにする サービスは、デフォルトでは、デスクトップとの対話を許可されていない。つまり、デスクトップにウインドウなどを表示する事ができない。(やろうとすると、かなり複雑な手続きが必要になる。)また、サービスが起動した外部プロセスも同じ制約課せられる。このため、次の手順で、マニュアルでデスクトップとの対話をサービスに許可する必要がある。 ・管理ツールからサービスを開く ・XxxxWinSerice のプロパティを表示する ・ログオン タブの『デスクトップとの対話をサービスに許可』をチェックする ・『OK』をクリックする ・サービスを再起動する 必要な環境: CLRによる Windows サービス プログラムの実行・インストール・アンインストールには、.NET Frameworkが必要。 参考URL MSDN - .NET Framework 開発用 Visual Studio プログラマーズ ガイド - 方法 : Windows サービスを作成する マイクロソフト サポート オンライン - [SDK32] サービスからアプリケーションデスクトップへのアクセス @IT総合トップ > 旧@IT会議室 > Insider.NET > C#のWindowsサービスからのProcessによるEXE起動について マイクロソフト サポート オンライン - CreateProcessAsUser() 関数とウィンドウ ステーションおよびデスクトップ
by isoq
| 2010-03-31 01:41
| C/C++/Win32
|
PR
検索
最新の記事
カテゴリ
全体 開発日記 コンピュータ C/C++/Win32 Ubuntu / Linux Web データベース 3Dグラフィックス スクリプティング 書籍 - 技術系 フリーウェア モバイル 日記 子供のこと 旅行日記 観察日記 グルメ 写真館 天体観測 ショッピング アートワーク ヘルスケア 携帯からの投稿 誤変換検索 趣味 Windows 未分類 タグ
海外
Windows 7
旅行
C++
ドイツ
Windows
Aspire 1410
ボストン
MFC
OpenGL
出張
REGZA
天体望遠鏡
お買い得
CUDA
42Z9000
GPGPU
グルメ
XPモード
NaiNai
最新のトラックバック
以前の記事
2022年 03月 2020年 05月 2020年 04月 2020年 03月 2018年 05月 2016年 02月 2015年 04月 2015年 03月 2013年 10月 2012年 01月 2011年 12月 2011年 11月 2011年 10月 2011年 09月 2011年 08月 2011年 07月 2011年 06月 2011年 05月 2011年 03月 2011年 02月 2011年 01月 2010年 11月 2010年 10月 2010年 09月 2010年 08月 2010年 07月 2010年 06月 2010年 05月 2010年 04月 2010年 03月 2010年 02月 2010年 01月 2009年 12月 2009年 11月 2009年 10月 2009年 09月 2009年 08月 2009年 07月 2009年 06月 2009年 05月 2009年 04月 2009年 03月 2009年 02月 2009年 01月 2008年 12月 2008年 11月 2008年 10月 2008年 09月 2008年 08月 2008年 07月 2008年 06月 2008年 05月 2008年 04月 2008年 03月 2008年 02月 2008年 01月 2007年 12月 2007年 11月 2007年 10月 2007年 09月 2007年 08月 2007年 07月 2007年 06月 2007年 05月 2007年 04月 2007年 03月 2007年 02月 2007年 01月 2006年 12月 2006年 11月 2006年 10月 2006年 09月 2006年 08月 2006年 07月 2006年 06月 2006年 05月 2006年 04月 2006年 03月 2006年 02月 2006年 01月 2005年 12月 2005年 11月 2005年 10月 2005年 09月 2005年 08月 2005年 07月 2005年 06月 2005年 05月 2005年 04月 2005年 03月 2005年 02月 2005年 01月 2004年 12月 2004年 11月 2004年 10月 2004年 09月 2004年 08月 2004年 07月 2004年 06月 2004年 05月 2004年 04月 2004年 03月 2004年 02月 2001年 01月 その他のジャンル
記事ランキング
ブログジャンル
画像一覧
フォロー中のブログ
外部リンク
|
ファン申請 |
||