どのサービスに依存する必要がありますか?


1

ほとんどのWindowsサービスが開始された後にのみ開始されるように、サービスに依存関係を追加します。企業サイトでセキュリティ上の理由で無効にされそうにないサービスを誰でも推奨できますか。私のサービスではネットワークサービスを起動して実行する必要があるため、これらの後にサービスが開始されることを確認したいと思います。このサービスは企業以外の環境にも展開される可能性があるため、エンドユーザーによって無効にされる可能性が低い適切なサービスを探しています。

回答:


2

Windows タスクスケジューラを使用して、アプリケーションを起動します。依存関係を追加しないでください。アプリケーションに実際にそのような依存関係があった場合、それは理にかなっています。しかし、これは正式な依存関係ではないため、正しいことではありません。

さらに、Windowsサービスの実行順序を保証することはできません。依存関係ルールを持っている人だけが特定の順序で実行されることが保証されています。他のすべてはそうではありません。つまり、数回の再起動の過程で、最後に実行されるWindowsサービスが異なる場合があります。

代わりに、タスクスケジューラで、ユーザーがログインしている場合にのみ実行するようにタスクを設定し、1回だけ実行し、タスクの実行を数秒遅らせるトリガーを作成できます。

ユーザーがログインした後にのみ実行するように設定して、タスクが最後または最後に近い状態で実行されることを保証するには、10秒または20秒で十分です。


ただし、タスクスケジューラルールの基礎としてイベントビューアのログを検索できます。「このイベントが発生した後にのみ実行する」。


タスクスケジューラはがらくたです。何にも依存しません。タスクスケジューラに依存するよりも、スタートアップアイテムやその他のハックに入れる方がはるかに優れています。
悪魔のような子犬2009年

1

あなたのサービスは「ネットワークサービスを起動して実行する必要がある」と言います。しかし、本当にそうですか?リンクや有効なIPアドレスがなくても、さまざまなIP関連サービスを実行するだけでいいですか?

それとも、あなたのサービスは、実際に起動時に外部サービスに即座に接続できると期待していますか?その場合、その外部サービスがダウンするとどうなりますか?ルートのどこかにネットワーク接続の問題がある場合はどうなりますか?あきらめて、クラッシュするか、停止しますか?

私の経験では、ほとんどの場合、人々がサービスを書いて他の組み込みサービスに依存させようとするとき、彼らが実際にやっているのは、適切なエラー処理コードを書くことを避けようとすることです。私はあなたのサービスが実際に何をしているのか分からないので、ローカルサービスが稼働していてもネットワーク接続が機能しない多くの方法を処理する方法についてアドバイスすることはできません。しかし、サービスがこの依存関係を必要とする理由を本当に考える必要があります。ネットワークが利用できない状態を優雅に処理できるように、それを記述するより良い方法はありませんか?


0

Windows Updateサービスをお勧めします。無効にされた可能性はほとんどありません。

VistaおよびWindows 7では、「自動(遅延開始)」と定義されているため、他のすべてのサービスの後に十分に起動します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.