サービス レコードの一覧

各サービス エントリは、インストールされているサービスのデータベースから読み取られます。SCM はサービスのサービス レコードを作成します。 サービス レコードには次のものが含まれます。

  • [サービス名]
  • 開始の種類 (自動開始または需要開始)
  • サービスの状態 ( SERVICE_STATUS 構造を参照)
    Type
    現在の状態
    許容される制御コード
    終了コード
    待機ヒント
  • 依存関係リストへのポインター

アカウントのユーザー名とパスワードは、サービスのインストール時に指定されます。 SCM は、ユーザー名をレジストリに格納し、パスワードをローカル セキュリティ機関 (LSA) のセキュリティで保護された部分に格納します。 システム管理者は、パスワードの有効期限が切れないアカウントを作成できます。 または、システム管理者は、パスワードの有効期限が切れたアカウントを作成し、パスワードを定期的に変更してアカウントを管理することもできます。

SCM は、ユーザー アカウントのパスワード、現在のパスワード、バックアップ パスワードの 2 つのコピーを保持します。 サービスが初めてインストールされるときに指定されたパスワードは、現在のパスワードとして格納され、バックアップ パスワードは初期化されません。 SCM は、ユーザー アカウントのセキュリティ コンテキストでサービスを実行しようとすると、現在のパスワードを使用します。 現在のパスワードが正常に使用されると、バックアップ パスワードとしても保存されます。 パスワードが ChangeServiceConfig 関数または Services コントロール パネル ユーティリティで変更された場合、新しいパスワードは現在のパスワードとして格納され、前のパスワードはバックアップ パスワードとして格納されます。 SCM がサービスの開始を試み、現在のパスワードが失敗した場合は、バックアップ パスワードが使用されます。 バックアップ パスワードが正常に使用されると、現在のパスワードとして保存されます。

SCM は、サービスが SetServiceStatus 関数を使用して状態通知を送信すると、サービスの状態を更新します。 SCM は、サービスからの状態通知を受け取る代わりに、I/O システムに対してクエリを実行することで、ドライバー サービスの状態を維持します。

サービスは 、SetServiceBits 関数を呼び出すことによって、追加の型情報を登録できます。 NetServerGetInfo 関数と NetServerEnum 関数は、サポートされているサービスの種類を取得します。