UI オートメーションのセキュリティの概要

メモメモ

このドキュメントは、System.Windows.Automation 名前空間で定義されているマネージ UI Automation クラスを使用する .NET Framework 開発者を対象としています。UI Automationに関する最新情報については、「Windows Automation API: UI Automation (Windows オートメーション API: UI オートメーション)」を参照してください。

ここでは、Windows Vista の Microsoft UI Automationのセキュリティ モデルについて説明します。

このトピックは、次のセクションで構成されています。

  • ユーザー アカウント制御
  • 高い特権が必要なタスク
  • マニフェスト ファイル

ユーザー アカウント制御

Windows Vista では特にセキュリティに重点が置かれており、革新的な機能の 1 つとして、標準ユーザー (管理者以外のユーザー) として実行していても、高い特権を必要とするアプリケーションおよびサービスの実行が必ずしもブロックされません。

Windows Vista では、ほとんどのアプリケーションに標準トークンまたは管理者トークンのいずれかが付与されます。 アプリケーションを管理者アプリケーションとして識別できない場合、既定でそのアプリケーションは標準アプリケーションとして起動されます。 アプリケーションが管理者アプリケーションとして識別されると、その起動前に Windows Vista は、昇格された権限でアプリケーションを実行することについてユーザーに事前に同意を求めます。 同意を求めるメッセージは既定で表示され、ユーザーがローカル管理者グループのメンバーであっても同様です。これは、管理者も実行に管理者資格が必要なアプリケーションやシステム コンポーネントが実行の許可を求めるまでは、標準ユーザーとして Windows Vista を実行しているためです。

高い特権が必要なタスク

管理者特権が必要なタスクを実行しようとすると、Windows Vista では、続行するかどうかを確認するダイアログ ボックスが表示されます。 このダイアログ ボックスはプロセス間通信から保護されているため、悪質なソフトウェアによってユーザー入力がシミュレートされることはありません。 同様に、他のプロセスは通常、デスクトップ ログオン画面にアクセスできません。

UI オートメーション クライアントは他のプロセスと通信する必要があり、それらの一部は高い特権レベルで実行されている可能性があります。 また、クライアントでは、通常は他のプロセスに表示されないシステム ダイアログ ボックスにアクセスすることが必要になる場合があります。 したがって、UI Automationクライアントはシステムによって信頼され、特別な特権で実行される必要があります。

高い特権レベルで実行されているアプリケーションと通信するために信頼されるには、アプリケーションに署名する必要があります。

マニフェスト ファイル

保護されたシステムの UI にアクセスするには、特別な属性を含むマニフェスト ファイルを使用してアプリケーションを構築する必要があります。 この uiAccess 属性は、次のように requestedExecutionLevel タグに含まれます。

<trustInfo xmlns="urn:0073chemas-microsoft-com:asm.v3">

    <security>

        <requestedPrivileges>

        <requestedExecutionLevel

            level="highestAvailable"

            UIAccess="true" />

        </requestedPrivileges>

    </security>

</trustInfo>

このコードの level 属性の値は、単なる一例です。

UIAccess は既定で "false" に設定されます。つまり、この属性を省略した場合、またはアセンブリのマニフェストが存在しない場合、アプリケーションは保護された UI にアクセスできません。

Windows Vista のセキュリティ、アプリケーションの署名、およびアセンブリ マニフェストの作成の詳細については、MSDN の「Developer Best Practices and Guidelines for Applications in a Least Privileged Environment (最小限の権限がある環境でのアプリケーションの開発者のベスト プラクティスとガイドライン)」を参照してください。