自動啟動服務

在系統開機期間,SCM 會啟動所有自動啟動服務和其相依的服務。 例如,如果自動啟動服務相依於需求啟動服務,則需求啟動服務也會自動啟動。

載入順序取決於下列各項:

  1. 載入排序群組清單中的群組順序。 此資訊會儲存在 下列登入機碼的 List 值中:

    HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\ServiceGroupOrder

    若要指定服務的載入順序群組,請使用 CreateService 或 ChangeServiceConfig 函式的 lpLoadOrderGroup 參數。

  2. 標記順序向量中所指定群組內的服務順序。 此資訊會儲存在下列登入機碼中:

    HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\GroupOrderList

  3. 針對每個服務列出的相依性。

開機完成時,系統會執行由下列登錄機碼 ImagePath 值指定的開機驗證程式:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\BootVerificationProgram

依預設,未設定此值。 系統只會報告第一位使用者登入后開機成功。 您可以提供開機驗證程式,以檢查系統是否有問題,並使用 NotifyBootConfigStatus 函式向 SCM 報告開機狀態。

開機成功之後,系統會將資料庫的複本儲存在最後一個已知良好 (LKG) 組態中。 如果對作用中資料庫所做的變更導致系統重新啟動失敗,系統就可以還原資料庫的這個複本。 以下是此資料庫的登入機碼:

HKEY_LOCAL_MACHINE\SYSTEM\ControlSetXXX\Services

其中 XXX 是儲存在下列登錄值中的值: HKEY_LOCAL_MACHINE\System\Select\LastKnownGood

如果具有SERVICE_ERROR_CRITICAL錯誤控制層級的自動啟動服務無法啟動,則SCM會使用 LKG 設定重新啟動電腦。 如果已使用 LKG 組態,開機會失敗。

您可以使用 SERVICE_CONFIG_DELAYED_AUTO_START_INFO 呼叫 ChangeServiceConfig2 函式,將自動啟動服務設定為延遲的自動啟動服務。 此變更會在下一次系統開機之後生效。 如需詳細資訊,請參閱 SERVICE_DELAYED_AUTO_START_INFO