設定は変更していません。どんな原因が考えられるか教えてください。
【状況】
OSはWinXP SP2を使用しています。
サービスは、友人が自作したサービスで、ローカルシステムアカウントで自動起動する設定になっています。
スペック・OSが同じPCがもう一台あるのですが、そちらのPCでは同じサービスが普通に動いています。
システム時計は同じ設定になっているので、年が変わったことによるプログラムの動作不良ではないと思います。
サービスの起動を"手動"に設定し、コントロールパネルからサービスの起動を行ったところ、正常にサービスが立ち上がりました。
サービスの自動起動と手動起動では、どのような違いがあるのでしょうか?参考になるURL等ありましたら教えてください。よろしくお願いします。
コメント欄が開かれていないようですので、回答枠で失礼いたします。
ID7009 サービスの接続中にタイムアウトになりました
ですが、イベントビューアのエラーの「ソース」部分が該当のサービス名でしたでしょうか。
もしそうであれば、ほぼ予想通りでサービスの起動順序の影響により自作サービスが起動し
きれない状態におちいっていると考えられます。
解決方法は、先に書いたとおりサービス起動順序をどうにかする事ですが、
なぜそうなるのかの例えを書くと、
・自作サービスのプログラムがある程度パソコンが起動しないと見れない場所に置いてありませんか?
ローカルHDD以外のUSBの中とか外付けHDDの中とか。
そうだとすれば各種ドライブのデバイスドライバが読み込まれない限り自作プログラムを読めないので起動できません。
・自作サービスの中で同上に外部メディアにアクセスするようなプログラムを書いていませんか?
そうだとすれば各種ドライブのデバイスドライバが読み込まれない限り自作プログラムを読めないので起動できません。
・自作サービスがWindowsの別サービスに依存したプログラムになっていませんか?
別サービスというのは例えば・・・ネットワークサービスなど。
そうだとすれば依存するサービスが読み込まれない限り自作プログラムを読めないので起動できません。
こういったところで調査してみると良いと思います。
また良くある簡単な逃げ方で、
自作サービスを起動する順番を一番最後あたりにする方法として、
サービスの起動を"手動"に設定しWindowsのスタートアップで起動するという設定を取ると、
レジストリに手を出さなくても良いですし簡単にできると思います。
スタートアップに入れるのはいわゆるバッチファイルと呼ばれるファイルで、
この中に「net start」コマンドを書くことで実現できます。
まず、サービスが起動時に異常終了していないか確認する必要があると思います。
サービスが異常終了している場合、イベントビューアにてエラーが表示されます。
異常終了しているようであれば、その原因を調査する必要があります。
もし異常終了もしていないようであれば、Windowsの問題ではなく自作サービスの
内部的なロジックの問題でプログラム上正常終了してしまっているのでしょう。
こうなると原因特定はプログラムした本人にしかわからないと思います。
もし異常終了してしまっている場合は、例えば以下の事が考えられます。
Windowsのサービスやスタートアップは起動順序がある程度は一定ですが、特に決まっていないためランダム順序起動です。
それによって、
他のプログラムに依存するプログラムだった場合は、依存する相手が起動していないと起動エラーとなる場合が考えられます。
この順序は、新たなソフトをインストールしたりちょっとしたWindowsへの環境変更で変わってしまうと考えてください。
もしそういう原因が考えられるとすれば、依存していると思われるサービスとの起動順序を以下URLを参考に対応する必要があります。
http://www.google.co.jp/search?q=Windows+%E3%82%B5%E3%83%BC%E3%8...
自動起動と手動起動での機能上の違いは無いと考えてよいです。
あえて出すとすれば先に上げた起動順序が(すべての起動が終わってから手動起動するので)最後に起動するという違いです。
以上参考になればと思います。
ご回答ありがとうございます。
なるほど、サービスが起動してもエラーとなる場合が考えられるのですね。
イベントビューアを見たところ、起動時に必ず2個のエラーが出ていました
ID7009 サービスの接続中にタイムアウトになりました
ID7000 サービスは次のエラーのため開始できませんでした。"其のサービスは指定時間内に開始要求または制御要求に応答しませんでした"
自分も同じ現象が起きたことがあります。
そのときは、確か、コントロールパネルのプログラムの削除をした際に、再起動をせずいくつか削除をしていたら、その後、自動で立ち上がっていたモノが自動では立ち上がらなくなったものがいくつか出てきてしまいました。
未だそのままです。
上記のような作業はしませんでしたか?
私の例ではアンインストールなどは行っていませんでした。
年末に起動して、正常に動いていたのを確認していたのですが、正月に帰省から戻って起動したら現象が発生しました。
年末に動かした際は、MS Officeなどを使っただけなので、設定の変更が行われたとは思えないのです。
ご回答ありがとうございます。
コメント欄が開かれていないようですので、回答枠で失礼いたします。
ID7009 サービスの接続中にタイムアウトになりました
ですが、イベントビューアのエラーの「ソース」部分が該当のサービス名でしたでしょうか。
もしそうであれば、ほぼ予想通りでサービスの起動順序の影響により自作サービスが起動し
きれない状態におちいっていると考えられます。
解決方法は、先に書いたとおりサービス起動順序をどうにかする事ですが、
なぜそうなるのかの例えを書くと、
・自作サービスのプログラムがある程度パソコンが起動しないと見れない場所に置いてありませんか?
ローカルHDD以外のUSBの中とか外付けHDDの中とか。
そうだとすれば各種ドライブのデバイスドライバが読み込まれない限り自作プログラムを読めないので起動できません。
・自作サービスの中で同上に外部メディアにアクセスするようなプログラムを書いていませんか?
そうだとすれば各種ドライブのデバイスドライバが読み込まれない限り自作プログラムを読めないので起動できません。
・自作サービスがWindowsの別サービスに依存したプログラムになっていませんか?
別サービスというのは例えば・・・ネットワークサービスなど。
そうだとすれば依存するサービスが読み込まれない限り自作プログラムを読めないので起動できません。
こういったところで調査してみると良いと思います。
また良くある簡単な逃げ方で、
自作サービスを起動する順番を一番最後あたりにする方法として、
サービスの起動を"手動"に設定しWindowsのスタートアップで起動するという設定を取ると、
レジストリに手を出さなくても良いですし簡単にできると思います。
スタートアップに入れるのはいわゆるバッチファイルと呼ばれるファイルで、
この中に「net start」コマンドを書くことで実現できます。
アドバイスを頂きました通り、スタートアップにバッチ登録したところ、正常に起動いたしました!
サービスのプロパティから依存関係を確認したところ、DHCPなどのネットワーク関連のサービスが登録されていました。
プログラムはDドライブにおいてあり、ドライブの読み込みは問題ないと思われますので、おっしゃるとおり起動順序のも課も知れません。
何にせよ回避策が見付かりましたので、これで解決です。細やかなアドバイスありがとうございました!
アドバイスを頂きました通り、スタートアップにバッチ登録したところ、正常に起動いたしました!
サービスのプロパティから依存関係を確認したところ、DHCPなどのネットワーク関連のサービスが登録されていました。
プログラムはDドライブにおいてあり、ドライブの読み込みは問題ないと思われますので、おっしゃるとおり起動順序のも課も知れません。
何にせよ回避策が見付かりましたので、これで解決です。細やかなアドバイスありがとうございました!