0

一部の Windows サービスは、PC の再起動後にのみ開始されますが、ソフトウェアがインストールされるとすぐに開始されるものもあります。

たとえば、SQL サーバー (インスタンス名) は、インストールされるとすぐに起動します。他のサービスには再起動が必要なものがあります。そのコンピューターを再起動すると、services.msc に表示されるようになります。レジストリを使用して行われますか?サービスのレジストリに関連するリンクを取得しました。それはレジストリか何かですか?(サービスを手動または自動に設定することは異なります。私の質問は、ソフトウェアの最初のインストール中に追加されたサービスについてです)

4

1 に答える 1

0

レジストリを直接操作してサービスを作成するべきではありません。サービス コントロール マネージャー API を使用してサービスを作成し、必要に応じてサービスを開始する必要があります。レジストリ値は文書化されていますが、それらはまだ API に対して非公開であり、再起動時にのみ有効になります。API を使用するとすぐに有効になり、レジストリの変更は API によって行われます。

Windows インストーラーを使用している場合は、Windows インストーラーの ServiceInstall および ServiceControl テーブルを使用して、インストーラーにこれらすべてを処理させることができます。

一部のサービスは、再起動するまで利用できないリソースに依存しています。一例として、保留中のファイルの名前変更操作パターンを介して起動時に上書きされるロックされたファイルが考えられます。もう 1 つの落とし穴は、サービスがシステム環境変数に依存している場合です。レジストリを更新して環境を設定した後、ブロードキャスト アドレスにメッセージを送信して、設定の変更をすべてのプロセスに通知する必要があります。残念ながら、サービス コントロール マネージャーはこれらのメッセージを無視するため、追いつくには再起動が必要です。

他の例はケースバイケースです。

于 2013-08-27T13:02:32.163 に答える