回答:
Windows タスクスケジューラを使用して、アプリケーションを起動します。依存関係を追加しないでください。アプリケーションに実際にそのような依存関係があった場合、それは理にかなっています。しかし、これは正式な依存関係ではないため、正しいことではありません。
さらに、Windowsサービスの実行順序を保証することはできません。依存関係ルールを持っている人だけが特定の順序で実行されることが保証されています。他のすべてはそうではありません。つまり、数回の再起動の過程で、最後に実行されるWindowsサービスが異なる場合があります。
代わりに、タスクスケジューラで、ユーザーがログインしている場合にのみ実行するようにタスクを設定し、1回だけ実行し、タスクの実行を数秒遅らせるトリガーを作成できます。
ユーザーがログインした後にのみ実行するように設定して、タスクが最後または最後に近い状態で実行されることを保証するには、10秒または20秒で十分です。
ただし、タスクスケジューラルールの基礎としてイベントビューアのログを検索できます。「このイベントが発生した後にのみ実行する」。
あなたのサービスは「ネットワークサービスを起動して実行する必要がある」と言います。しかし、本当にそうですか?リンクや有効なIPアドレスがなくても、さまざまなIP関連サービスを実行するだけでいいですか?
それとも、あなたのサービスは、実際に起動時に外部サービスに即座に接続できると期待していますか?その場合、その外部サービスがダウンするとどうなりますか?ルートのどこかにネットワーク接続の問題がある場合はどうなりますか?あきらめて、クラッシュするか、停止しますか?
私の経験では、ほとんどの場合、人々がサービスを書いて他の組み込みサービスに依存させようとするとき、彼らが実際にやっているのは、適切なエラー処理コードを書くことを避けようとすることです。私はあなたのサービスが実際に何をしているのか分からないので、ローカルサービスが稼働していてもネットワーク接続が機能しない多くの方法を処理する方法についてアドバイスすることはできません。しかし、サービスがこの依存関係を必要とする理由を本当に考える必要があります。ネットワークが利用できない状態を優雅に処理できるように、それを記述するより良い方法はありませんか?