- 締切済み
【アプリのサービス化について】
【アプリのサービス化について】 現在私は、VC++ 2005 ExpressEditionを用いてアプリを開発しています。 その開発の中で、本アプリを電源を入れた時に自動起動させたいと思っております。 方法としては 1.レジストリにサービスとして登録する 2.タスクスケジューラに登録する の二つを考えていますが、これらをソースコード上から行う事は可能なのでしょうか? もし可能であれば、できればコードのサンプルを載せていただきたいと思っております。 よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- davidfox
- ベストアンサー率58% (21/36)
1. の端折ったサンプルとしてこんな感じでしょうか... main(int argc, char *argv[]) { SC_HANDLE newService, scm; scm = OpenSCManager(略... newService = CreateService(scm, 略... CloseServiceHandle(newService); CloseServiceHandle(scm); }
- kirinoma
- ベストアンサー率53% (288/542)
実行バイナリファイルをサービスに登録する関数はCreateService関数になります. ・CreateService関数 http://msdn.microsoft.com/ja-jp/library/cc429079.aspx ・DeleteService関数 http://msdn.microsoft.com/ja-jp/library/cc429089.aspx ・ソースの例 http://www.spanky-world.com/lab/windows_lab/windowslab_002.html CreateService関数を初回起動時(インストール時?)に実行する様にすれば良いのではないでしょうか(私自身はこのようなことをやったことがないので詳細は不明です). あと,sc.exeはデフォルトのWindowsXP(2000,server 2003)に含まれていた様な気がします. localicaさんのおっしゃるとおり,system()関数でscを呼べば,手間がかからないで済みそうです (こちらもやったことないので不明). 以上,参考になれば幸いです.
- localica
- ベストアンサー率52% (202/385)
失礼、作成したアプリをサービスとして登録したいという要件でしょうか? ソースを探すのが面倒でしたので、マイクロソフトから提供されているツールを外部コマンドとして呼び出して実装しては如何でしょうか。 http://support.microsoft.com/kb/251192/ja
- localica
- ベストアンサー率52% (202/385)
VC++ 2005 を電源ON時に起動させたいという要件でしょうか? であるなら、VC++ のexeのショートカットをスタートアップに登録すれば良いのでは? わざわざサービスに登録する必然がありません。
補足
それですと、ログオン後の起動ということになってしまいます。 今回の目的は「ログオン前の時点からのアプリ起動」なので、スタートアップでは解決にならないのです。 分かりづらくて申し訳ありません。
補足
確かにこれは可能かもしれないのですが、 このツールがないと出来ないということになってしまいますよね? こういったツールを利用しなくても、 どのPCにアプリをインストールしても同じような結果になるように作成したいのです。 そのためにはタスクスケジューラか、レジストリの登録かなと思っていたのですが・・・