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