私は、主にブーストを使って、 "やる"というコンソールプログラムを書いています。 Windowsサービスに変換するにはどうすればいいですか? Windowsサービスについて事前に知っておくべきことはありますか?C++プログラムをWindowsサービスに変換しますか?
答えて
There's a good example on how to set up a minimal service on MSDNの一部であるSRVANYツールを使用してサービスとして実行するアプリケーションを設定することができます。 main関数、エントリーポイント、およびサンプルコードの記述については、パートを参照してください。
Windowsサービスを構築して実行すると、次の大きな問題が発見されます。デバッグするのは苦痛です。ターミナルはありません(したがってstdout/stderrもありません)。実行可能ファイルを実行しようとすると実際にサービスを起動してからあなたに戻ります。
非常に便利だとわかったのは、アプリケーションに-foreground
オプションを追加することです。そのフラグを指定して実行すると、サービス開始コードがバイパスされ、代わりに通常のコンソールアプリケーションのように実行されるため、デバッグする。 VS.Netでは、そのフラグを使用して起動するデバッグオプションを設定します。
あなたはCodeProjectのから、このツールを使用して 'それをラップ' することができるかもしれない:
http://www.codeproject.com/KB/system/xyntservice.aspx
一見の価値あり。
最も簡単な解決策は、Visual Studioで新しいWindowsサービスプロジェクトを作成し、コードを新しいプロジェクトにコピーすることです。
UI(この場合はコンソール)をロジックから分割するようにコードをリファクタリングすると、作業を行うライブラリを作成してコンソールプロジェクトとサービスプロジェクトの両方から呼び出すことができます。
作業コード(UI)をライブラリとしてサービスにロードするのではなく、 – Patrick
Srvanyでは、同時に1つのサービスしか許可されません。だから、私はsginvany(sFany)を書いて、nginxとphp-cgiを一緒にWindowsサービスとして実行させる。ここではソースがhttps://github.com/stxh/sFany
MSDN here
に本当に良い例がありますされてそれは自己/アンインストール機能とログサービスの開始をインストールし、Windowsイベントログにイベントを停止しているボイラープレートC++サービスプロジェクトです。他のサービスと同様に、サービスアプリ(スナップイン)を介して停止および開始することができます。最初に、LocalSystemの権利を与えて、動作していることを確認することができます。少なくとも、LocalServiceの権限でプロジェクトを開始するのに十分な権限がありません。それ以外の点では、ダウンロードした指示にもかかわらず、Visual Studio 2008プロジェクトがそのまま実行されます。
少し遅れていますが、これが他の人に役立つことを願っています。
- 1. 通常のWindowsプログラムをWindowsサービスに変換
- 2. PythonプログラムをC/C++コードに変換しますか?
- 3. C#プログラムによるWindowsサービスの開始
- 4. vb6アプリケーションをWindowsサービスに変換する
- 5. PARIプログラムをC++に変換
- 6. CプログラムをC#に変換する
- 7. Cプログラムをアセンブリに変換しますか?
- 8. c/C++でWindowsサービスのステータスを変更
- 9. C#コンソールアプリケーションをサービスに変換する
- 10. Windows XPでプログラムをサービスとして起動できますか?
- 11. Python KivyプログラムをCコードに変換
- 12. Objective C/iPhone AppプログラムでNSMutableDataをJSONまたはDictionaryに変換しますか?
- 13. cプログラムをcに変換するツールや方法がありますか#
- 14. Windowsサービスからプログラムを実行
- 15. CプログラムをMIPSアセンブリ言語プログラムに変換する
- 16. C#のWindowsサービス
- 17. c#WindowsサービスConsole.Writeln
- 18. Windowsサービス(C++)
- 19. Windowsサービス - C#
- 20. すべてのObjective CプログラムはCコードに変換されますか?
- 21. WCFサービスのプログラム構成を設定ファイルに変換する
- 22. .NET WindowsサービスをAzure Web Jobに変換する
- 23. PythonスクリプトをWindowsサービスに変換する際の問題
- 24. C#コンソールアプリケーションをサービスに変換する(メインメソッドが機能しない)
- 25. C++ WindowsサービスなしATL
- 26. C#WindowsフォームコードをC#のAndroidコードに変換する
- 27. C#のWindowsサービスからキーイベントをキャプチャします
- 28. インストール/アンインストールC Windowsサービス
- 29. C#Windowsサービス代替
- 30. WindowsサービスのC#-WebRequest
ここでデバッグするためのヒントがいくつかあります(特に、gflagsを使用してデバッガを自動的に起動する方法)。http:// support .microsoft.com/kb/824344 –
-foregroundをコマンドラインに追加しますか? – Maciek
はい、フラグなしで実行すると、サービスがインストールされて実行されます(サービスが動作する必要があります)。 -foregroundオプションを指定して実行すると、サービスのインストール手順が省略されます。 –