• 締切済み

サービスプログラムの作成方法

VC++2008にてプログラムを作成しています。 現在、ダイアログベースで作成していたプログラムを、 サービスプログラムへ変更しようとしているのですが、 サービスプログラム自体を作成したことがなく、 いろいろネットで読んでみたのですが、 分からないところがありすぎて困っています。 ちなみに、現在のダイアログベースのプログラムは、 CAsyncSocketとマルチスレッドを使用して クライアントPCと相互通信をするものです。 PostgreSQLアクセス用のODBCプログラムもあります。 (ですので、当然ながらダイアログは必要ありません) まず、VisualStudioにて新規プロジェクト→ Windowsサービスを選択し、プロジェクトを作りました。 元のプログラムから、cpp/hファイルを移行し、 CString等の変数をしようしているため、 stdafx.hに、 #define _AFXDLL #include <afxwin.h> 上記を追記し、ビルドしました。 Setupプロジェクトも追加し、 カスタム動作のインストール、アンインストールに、 プライマリ出力を追加し、引数をそれぞれ、 /Service、/UnregServerにし、インストールしてみましたが、 管理ツールのサービスには登録されませんでした。 Serviceプログラムがいけないのかと思い、 単純に新規プロジェクトを作成し、 Setupプロジェクトを追加して、設定したあと、 インストールしてみましたが、これでも登録されていませんでした。 なにか、他に設定等が必要なものがありますでしょうか? Windowsサービスでの作成については、 ネットに載っているのを見つけられなかったのですが、 ATLでのサービスにも挑戦してみました。 しかし、<afxsock.h>をインクルードする手段が みつからず、断念しました。 どちらかの手段で、サービスプログラムを 作成したいのですが、上記問題について、 アドバイスでもよろしいので、よろしくお願いします。

みんなの回答

  • phoenix343
  • ベストアンサー率15% (296/1946)
回答No.2

どっかで失敗してるかもしれないので、 printfなり挿入してエラーも無く完了してるかを見てみたらどうでしょう?

lhouse
質問者

補足

Windowsサービスの新規プロジェクト+ Setupプロジェクトのみで、他に何もクラス等を 追加しない状態で、インストールしてみましたが、 サービス登録がされません。 現時点では、私が作成したプログラムの問題以前に、 Setupプロジェクトの設定の問題のように思われるのですが。。。

回答No.1

> /Service、/UnregServerにし、インストールしてみましたが、 xxxWinService.cpp が自動生成されてないですか? この中の_tmain()の前に //サービスをインストールまたはアンインストールするには、"xxx.exe -Install [-u]" と入力してください。 という注釈があります。 _tmain()でサービス登録/削除をしています。

lhouse
質問者

補足

ご指摘の注釈はプロジェクト作成時に確認し、 「-Install」または「/Install」も試してみたのですが、 やはり、サービスには登録されていませんでした。

関連するQ&A

  • atlbase.h と afxwin.hの同時定義

    こんにちは、honiyonです。  VC++で、MFCを用いてNT用のサービスプログラムを作成しています。  ATL COM AppWizardで、サービスアプリケーションを選択したので、atlbase.hが StdAfx.hに宣言されています。  CString型を使いたいので、該当cppファイルに、afxwin.hをincludeしました。 何故か StdAfx.hより先に afxwin.hをincludeすると、CStringの定義が正しくされないようなので、後にもってきています。 #include "StdAfx.h" #include <AfxWin.h">  この状態だと、atlbase.h, AfxWin.h双方で windows.hをincludeしているようで、AfxWin.hが参照する afxv_w32.hで、以下のようなエラーが発生します。 fatal error C1189: #error : WINDOWS.H already included. MFC apps must not #include <windows.h>  この問題を回避するために、atlbase.hやAfxWin.hを改造して回避出来そうですが、それは今後別のものを作る時の支障になりそうなので避けたいです。  その他の方法で回避する事は出来ないでしょうか?  宜しくお願いします(..

  • VBのプログラムを配布したら・・・

     Visual Studio 2008(VB)でアプリケーションを作成後、セットアッププロジェクトで配布用のプログラム(Setup.exe)を作成し、別の環境のPCにセットアップを行ったところ、大部分はうまく動作したのですが、印刷の分だけがエラーを出して終了してしまいます。  セットアッププロジェクトの作成手順は以下のようにしていますが、何かおかしいのでしょうか? (1) [ファイル]-[新しいプロジェクト]-[セットアッププロジェクト作成] (2) [アプリケーションフォルダー]-[追加]-[プロジェクト出力]-[プライマリ出力]を選択 (3) (2)のショートカットを作成し、ユーザーのデスクトップ及びユーザーのプログラムメニューの下に    作成したフォルダーに移動 (4) ソリューションエクスプローラに出来た[Setup](私の場合)をビルド 因みに帳票類は、CrystalReportsで作成し、PDF出力するように作成しています。 プログラムを作成したPCにインストールした場合のみ問題なく動作していますが、同じプリンター を共有するPCにインストールした場合でも印刷が出来ないためドライバーの問題でもないような 気がします。 どなたかお知恵をお借り出来ませんでしょうか?

  • VC++ExpressEdition2005でのMFC利用

    Visual Stdio Express Edition 2005 C++のMFCに関して質問させてください。 とあるプロジェクトをコンパイルしますと, "AFXWIN.H":No such file or directoryとのエラーが出ます。 調べて見たところ,AFXWIN.hはMFCだと言う記述を目にしました。 そして公式サイトの記述によりますと, >MFCとATLはVisual C++ 2005 Express Editionには含まれません。MFCとATLは、その他のすべてのVisual Studio2005エディションに含まれる予定です。 なのだそうです。 ですので,MFCを含むプログラムをこのソフトでやるのは無理かな? と思ったのですが,PSDKをインストールすればExpressEditionでも出来る, という事も聞きました。 結局真実がどうなのかがわからなくなってしまいました。 Visual C++ 2005 Express EditionではMFCは使えるのかどうか? またもしExpressEditionで使えないのならば,どれなら使えるのか?(Standard?Professional?) ご存知の方いらっしゃいましたらご鞭撻どうぞ宜しくお願いいたします。

  • Visual C++ 6.0で作成したプログラムをVisual C++

    Visual C++ 6.0で作成したプログラムをVisual C++ 2008で実行することはできるのでしょうか? ビルドしてみるのですが、afxwin.hがないと表示されてしまいます。 自分でも検索してみたのですが、ダウンロードできる状況なのかも良く分かりませんでした。 2週間後にプレゼンがあるのですが、手持ちのパソコンにはVisual C++2008しかないため、6.0をインストール、と考えたのですがそれもできないようなので・・・ もし、実行できるのであればその方法をお手数ですが分かりやすく教えてくださるとうれしいです。

  • VB.NETでただの実行ファイルを作る方法

    VB.NETでプロジェクトを作成すると、イベント型?ダイアログベースのプログラムになってしまうのですが、ダイアログ(フォーム)を用いないプログラムにするにはどうすればよいのでしょうか? C言語でいうMain()から始まるプログラムにしたいのです。

  • visual C++ 2005 でのイベントの作成

    visual C++ 2005 でのイベントの作成で困っています。 ダイアログ ベースのプログラミング http://oshiete1.goo.ne.jp/oshiete_new.php3 上記のサイトをはじめから実行していったのですが、「イベントハンドラ の追加」の部分で void CButtonDlg::OnBnClickedButton1() { // TODO: この位置にコントロール通知ハンドラ ... } の// TODO: この位置にコントロール通知ハンドラ ...の部分にサイトの 記述に有るような AfxMessageBox("第 1 のボタンを押しました。"); という記述をしたのですがこれをビルドするとエラーになります。 エラーメッセージは c:\documents and settings\asakawa\my documents\visual studio 2005\projects\ren\ren\rendlg.cpp(160) : error C2665: 'AfxMessageBox' : 2 オーバーロードのどれも、すべての引数の型を変換できませんでした c:\program files\microsoft visual studio 8\vc\atlmfc \include\afxwin.h(5025): 'int AfxMessageBox(LPCTSTR,UINT,UINT)' の 可能性があります。 c:\program files\microsoft visual studio 8\vc\atlmfc \include\afxwin.h(5027): または 'int AfxMessageBox(UINT,UINT,UINT)' 引数リスト '(const char [17])' を一致させようとしているとき と出ます。 何が原因でしょうか? ヒントでも良いんですが…

  • (MFC)別々のプロジェクト内で作成したダイアログを表示させる方法

    VC++2005のMFCにてアプリケーションを作成しています。 一つのソリューション内に二つのプロジェクトA、Bが存在し、 プロジェクトAで発生したあるイベント(例:ボタン押下)にて、 プロジェクトBで作成したダイアログを表示させたいのですが、 実装したところ、下記コンパイルエラーが出てしまいます。 「error C2065: 'IDD_TEST2_DIALOG' : 定義されていない識別子です。」 現在のプロジェクトの設定としては、 ・プロジェクトAの依存先をプロジェクトBに設定 ・プロジェクトA選択状態で、  「プロジェクト」→「プロパティ」→「構成プロパティ」  →「C/C++全般」→「追加のインクルードディレクトリ」にて、プロジェクトBのパスを指定 と設定しているのですが、どこに問題があるのでしょうか? もし問題があるようでしたら、正しい設定方法、また実装方法について、 お手数おかけしますが、ご教授お願いできませんでしょうか? また下記にソースコード実装例を記載します。 【プロジェクトA(呼び出し側)】 #include "test2Dlg.h" //プロジェクトBのヘッダファイル ・・・ void Ctest1Dlg::OnBnClickedOk() { CDlgTest MyDlg; MyDlg.DoModal(); //プロジェクトBのダイアログ生成 } 【プロジェクトB(呼出され側)】 ・リソースビューにて、ダイアログ(IDD_TEST2_DIALOG)の「クラスの追加」で、  クラス名「CDlgTest」と指定

  • VisualStudioのプロジェクトでセットアッププロジェクトを作成

    VisualStudioのプロジェクトでセットアッププロジェクトを作成し、 ユーザー情報ダイアログを追加した時、 名前と所属を入力できるようになりますが、 何もしなくても、表示がでています。 何の値を表示しているのでしょうか? ご存知の方よろしくお願いします。

  • gdiplus.dllを使わないプログラム開発

    はじめまして、 ”Microsoft Visual C++ 2008”にてダイアログベースのプログラムを書いています。 windows2000に対応するために、gdiplus.dllを使用しないプログラムを作成したいのですが、 新規作成したプロジェクトをそのままビルドしただけでもgdiplus.dllが読込まれてしまいます。 読込まなくするには、どのように設定を行なえばよいのでしょうか。 それとも”Visual C++ 2008”ではgdiplus.dllを使用しないダイアログベースのプログラム開発は不可能なのでしょうか。 動作対象OS:win2000(SPなし)以降 開発環境: 言語:Visual C++ 2008(visual studio 2008 professional edition) テンプレート:MFCアプリケーション アプリケーションの種類:ダイアログベース 以上、よろしくお願いいたします。

  • atlstr.hのインクルードによるエラーについて

    atlstr.hのインクルードにより生じるエラーについて質問させて頂きます。 開発環境は、Visual Studio 2008 Professional Editionです。 (Visual Studio 2008におけるプログラミングは正直まだ慣れておりませんorz) Visual Studio 2008製品内のVisual C++ 2008において、以下の操作を行いプログラムを 実行すると、コンパイルは通るのですが、プログラム実行後にエラー音が一度鳴るだけ でフォームが表示されないというエラーが発生します。その際、タスクマネージャでプロセ スを確認するとプログラム自体は動いているようで、”AtlStrTest.exe”というプロセスが実 行されているのが確認できます。 1.[ファイル]->[新規作成]->[プロジェクト]で新しいプロジェクトダイアログを表示させる 2.[Visual C++]->[CLR]->[Windows フォーム アプリケーション]を選択し、プロジェクト名   ”AtlStrTest”でプロジェクトを新規作成 3.プロジェクト内に生成された”atdafx.h”の”// TODO: プログラムに必要な追加ヘッダー   をここで参照してください。”というコメントの下に#include <atlstr.h>の一行を追加する  原因を分析しようにも、ヘッダをインクルードしただけでエラーが起きるという状況がは じめてなので、途方に暮れている状態です。 大変恐縮ですが、このatlstr.hのインクルードによるエラーがなぜ発生したのかについて、 どなたかアドバイスよろしくお願いいたします。 【関連情報】  同様の操作を、Win32コンソールアプリケーションで実行したときは、このようなエラーは 出ませんでした

専門家に質問してみよう