Windows Vista のサービスの変更

サービス モデルには、サービスのパフォーマンス、信頼性、セキュリティ、管理、管理を改善するための大幅な変更が行われています。

次の表は、Windows Vista のサービスの機能強化をまとめたものです。

拡張機能 説明
遅延自動開始
遅延自動開始サービスは、システムの開始直後に開始されます。 これにより、システムの起動パフォーマンスが向上しながら、これらのサービスの自動起動が提供されます。 遅延自動開始フラグを設定するには、 changeServiceConfig2 関数を SERVICE_CONFIG_DELAYED_AUTO_START_INFOと共に呼び出します。
障害の検出と回復
サービスが失敗した場合、サービス コントロール マネージャー (SCM) は、その障害からの復旧を試みるためにサービスを再起動するなど、エラー アクションを実行できます。 エラー アクションを構成するには、SERVICE_CONFIG_FAILURE_ACTIONSを使用して ChangeServiceConfig2 を呼び出します。
事前シャットダウン通知
サービスは、実際のシャットダウン通知を受信する前に、HandlerEx 関数でSERVICE_CONTROL_PRESHUTDOWN通知を受信するように登録できます。 これにより、サービスが正常にシャットダウンされるまでの時間の長いシャットダウン手順が提供されます。 タイムアウト値を設定するには、SERVICE_CONFIG_PRESHUTDOWN_INFOを使用して ChangeServiceConfig2 を呼び出します。
制限付きネットワーク アクセス
サービス SID を使用して、ポート、プロトコル、またはネットワーク トラフィックの方向へのアクセスを制限できます。 サービスのネットワークへのアクセスを制限するには、 INetFwServiceRestriction インターフェイスを使用します。
最小限の特権で実行する
サービスは、必要な特権 (LocalService、NetworkService、LocalSystem、ドメイン アカウント、またはローカル アカウント) を含む任意のアカウントで実行でき、SERVICE_CONFIG_REQUIRED_PRIVILEGES_INFOChangeServiceConfig2 を呼び出すことによって、必要な特権を示すことができます。 SCM は、不要な特権を削除します。
サービスの分離
サービスは、サービス SID を含むアクセス制御エントリでオブジェクトをセキュリティで保護することで、ファイルやレジストリ キーなどのオブジェクトを排他的に使用するために分離できます。 この SID がサービスに割り当てられた後、サービス所有者はオブジェクトのアクセス制御リストを変更して SID へのアクセスを許可できます。 これにより、高い特権アカウントで実行したり、オブジェクトのセキュリティを下げたりすることなく、サービスが特定のオブジェクトにアクセスできるようになります。 サービス SID を設定するには、SERVICE_CONFIG_SERVICE_SID_INFOを使用して ChangeServiceConfig2 を呼び出します。
サービス状態変更通知
NotifyServiceStatusChange 関数を使用して、サービスが作成、削除、または状態の変更を行ったときに通知されるようにサービスを登録できます。 これは、状態をポーリングするループで QueryServiceStatusEx 関数を呼び出すよりも効率的です。
セッション 0 の分離
サービスは常にセッション 0 で実行されています。 Windows Vista より前では、最初にログオンしたユーザーもセッション 0 に割り当てられました。 これで、セッション 0 は、対話型ユーザー セッションに関連付けられていないサービスおよびその他のアプリケーション専用に予約されています。 (ログオンする最初のユーザーはセッション 1 に接続され、ログオンする 2 番目のユーザーはセッション 2 に接続されます。セッション 0 では、ユーザーと対話するプロセスはサポートされていません。
この変更は、サービスがアプリケーションにメッセージを投稿または送信できず、アプリケーションがサービスにメッセージを送信または投稿できないことを意味します。 さらに、サービスはダイアログ ボックスなどのユーザー インターフェイス項目を直接表示できません。 サービスは WTSSendMessage 関数を使用して、別のセッションでダイアログ ボックスを表示できます。

サービス