c++でwindows serviceプロジェクト
「NT(new technology) サービス」→「Windows サービス」
サービスの登録 〜 SCM データベース
HKLM\System\CurrentControlSet\Services
①『CLR』の『Windows サービス』 → 新規プロジェクト
プロジェクト名を入力 → 『OK』ボタン
②作成された XxxxxWinService.h をダブルクリック → デザインビュー
右クリックから「プロパティ」を選択
プロパティページから、以下最低限の項目を設定:
ServiceName - サービスを実行するとき使うサービス名
StartType - 自動(Automatic)/手動(Manual)/無効(Disabled)
③デザインビューを右クリック → 『インストーラの追加』を選択
ProjectInstaller クラスが追加され、
デザインビューに ServiceProcessInstallerとServiceInstallerのインスタンスが追加される
④ServiceInstaller のインスタンス(serviceInstaller1)を選択し、プロパティーページを表示
ServiceName:サービス自体のServiceName(XxxxxWinService.hのプロパティ)と一致している事を確認
サービス名を変更した場合は、ここも変更する必要がある
ServiceProcessInstaller のインスタンス(serviceProcessInstaller1)を選択し、プロパティーページを表示
ここで、必要な設定を変更:
Account - サービスを実行するアカウント
→local Systemにすれば、実行するとき、passwordのチェック要らない
⑤XxxxxWinService.h のコードを表示して、OnStart() と OnStop() を編集して、サービスの開始・終了処理を記述
⑥ビルドして実行ファイルを作成
⑦コマンドでサービスをインストール、起動、停止、アンインストール
コマンドラインでexeファイルあるフォルダまで行って、
Xxxx.exe /Install → サービスをインストール
net start"サービス名" → サービスを起動
net stop"サービス名" → サービスを停止
Xxxx.exe /Install /u → サービスをアンインストール