次の方法で共有


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

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

この概要では、Windows Vista での Microsoft UI オートメーションのセキュリティ モデルについて説明します。

ユーザー アカウント制御

セキュリティは Windows Vista の主な焦点であり、イノベーションの中で、高い特権を必要とするアプリケーションやサービスの実行が必ずしもブロックされることなく、ユーザーが標準 (管理者以外) ユーザーとして実行できることです。

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

より高い特権を必要とするタスク

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

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

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

マニフェスト ファイル

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

<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
  <security>
    <requestedPrivileges>
      <requestedExecutionLevel
        level="highestAvailable"
        uiAccess="true" />
    </requestedPrivileges>
  </security>
</trustInfo>

このコードの level 属性の値は、例にすぎません。

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