サービス レコードの一覧
各サービス エントリは、インストールされているサービスのデータベースから読み取られます。SCM はサービスのサービス レコードを作成します。 サービス レコードには次のものが含まれます。
- [サービス名]
- 開始の種類 (自動開始または需要開始)
- サービスの状態 ( SERVICE_STATUS 構造を参照)
- Type
現在の状態
許容される制御コード
終了コード
待機ヒント - 依存関係リストへのポインター
アカウントのユーザー名とパスワードは、サービスのインストール時に指定されます。 SCM は、ユーザー名をレジストリに格納し、パスワードをローカル セキュリティ機関 (LSA) のセキュリティで保護された部分に格納します。 システム管理者は、パスワードの有効期限が切れないアカウントを作成できます。 または、システム管理者は、パスワードの有効期限が切れたアカウントを作成し、パスワードを定期的に変更してアカウントを管理することもできます。
SCM は、ユーザー アカウントのパスワード、現在のパスワード、バックアップ パスワードの 2 つのコピーを保持します。 サービスが初めてインストールされるときに指定されたパスワードは、現在のパスワードとして格納され、バックアップ パスワードは初期化されません。 SCM は、ユーザー アカウントのセキュリティ コンテキストでサービスを実行しようとすると、現在のパスワードを使用します。 現在のパスワードが正常に使用されると、バックアップ パスワードとしても保存されます。 パスワードが ChangeServiceConfig 関数または Services コントロール パネル ユーティリティで変更された場合、新しいパスワードは現在のパスワードとして格納され、前のパスワードはバックアップ パスワードとして格納されます。 SCM がサービスの開始を試み、現在のパスワードが失敗した場合は、バックアップ パスワードが使用されます。 バックアップ パスワードが正常に使用されると、現在のパスワードとして保存されます。
SCM は、サービスが SetServiceStatus 関数を使用して状態通知を送信すると、サービスの状態を更新します。 SCM は、サービスからの状態通知を受け取る代わりに、I/O システムに対してクエリを実行することで、ドライバー サービスの状態を維持します。
サービスは 、SetServiceBits 関数を呼び出すことによって、追加の型情報を登録できます。 NetServerGetInfo 関数と NetServerEnum 関数は、サポートされているサービスの種類を取得します。