Windowsサービス起動

Windows版では adiary.exe をWindowsサービスに登録するプログラムが公開されています。

汎用EXEファイルWindowsサービスラッパー

adiary_service.exe はadiary専用のアプリケーションではなく、汎用のサービスラッパーとして製作しています。このプログラムを使用することで、任意のEXEファイルをWindowsサービスとして起動できます。

  • 同じフォルダにある、実行ファイル名から「_service」を削除したものを起動ターゲットとして使用します。
  • ターゲット起動時のオプションは、サービス登録時のオプション(引数)をそのまま使用します。

使い方

adiary.exe と同じフォルダに adiary_service.exe を配置します。 adiary_service.exe を実行すると、サービスに登録します(そのままサービスが開始されます)。サービスに登録されると、Windows起動のタイミングで、adiaryがバックグラウンド起動するようになります。

もう一度実行するとサービスから削除します。

サービス登録することで、ユーザー権限ではなくシステム権限でadiaryが動作することになります。セキュリティ面には十分ご注意ください。

オプション指定の例

adiary.exe を「-p 8888」オプション付きでサービスに登録したい場合は、adiary_service.exe でサービスを登録する際に「-p 8888」オプションを付けて起動します。

サービス登録時に付いていたオプションを、そのままサービス起動のオプションとして使用します。

その他

  • 内部的に「sc」コマンドを呼び出してサービス登録をしています。
  • サービス停止時、起動したプロセス(adiary.exe等)にCTRL-Cを送信し、それでもプロセスが落ちないときに「プロセスkill」を実行しています。
    • 孫プロセスまではkillしていないので、CTRL-Cで終了しないアプリでは、孫プロセスが残る可能性があります。
  • サービスとして起動されたかどうかは、カレントディレクトが.EXEファイルの存在するディレクトリと等しいかどうかで判定しています。等しい時は通常起動判定になります。
    • もっと良い判定方法があれば誰か教えて。

バグ報告等

adiaryのバグ報告と同じようにお願いします。