UI オートメーションのセキュリティの概要
Note
このドキュメントは、System.Windows.Automation 名前空間で定義されているマネージド UI オートメーション クラスを使用する .NET Framework 開発者を対象としています。 UI オートメーションの最新情報については、Windows Automation API の「UI オートメーション」を参照してください。
この概要では、Windows Vista での Microsoft UI オートメーションのセキュリティ モデルについて説明します。
ユーザー アカウント制御
セキュリティは Windows Vista の重要点であり、とりわけ顕著な革新として、より高い特権が必要なアプリケーションとサービスの実行を必ずしもブロックされずに、(管理者以外の) 標準ユーザーとして実行する能力が挙げられます。
Windows Vista では、ほとんどのアプリケーションに、標準トークンまたは管理トークンのいずれかが付属しています。 アプリケーションが管理アプリケーションとして識別できない場合は、既定で標準のアプリケーションとして起動されます。 管理アプリケーションとして識別されたアプリケーションが起動される前に、Windows Vista は、昇格された権限でアプリケーションを実行することへの同意をユーザーに求めるメッセージを表示します。 ユーザーがローカル管理者グループのメンバーである場合でも、同意を求めるメッセージは既定で表示されます。これは、管理者の資格情報を必要とするアプリケーションまたはシステム コンポーネントが実行の許可を要求するまで、管理者は標準ユーザーとして実行するためです。
より高い特権が必要なタスク
管理者特権が必要なタスクをユーザーが実行しようとする場合、Windows Vista はユーザーに続行に同意するかを確認するダイアログ ボックスを表示します。 このダイアログ ボックスは、悪意のあるソフトウェアがユーザー入力をシミュレートできないように、プロセス間通信から保護されます。 同様に、デスクトップのログオン画面は、通常は他のプロセスからはアクセスできません。
UI オートメーション クライアントは、他のプロセスと通信する必要があります。プロセスによっては、より高い特権レベルで実行している可能性があります。 クライアントにも、通常は他のプロセスによって表示できないシステム ダイアログ ボックスへのアクセスが必要になる可能性があります。 そのため、UI オートメーション クライアントはシステムによって信頼されている必要があり、特別な特権で実行される必要があります。
より高い権限レベルで実行されているアプリケーションと通信する信頼を得るためには、アプリケーションに署名する必要があります。
マニフェスト ファイル
保護されたシステム UI にアクセスするためには、次のように、requestedExecutionLevel
タグに uiAccess
属性が含まれるマニフェスト ファイルを使用して、アプリケーションをビルドする必要があります。
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel
level="highestAvailable"
uiAccess="true" />
</requestedPrivileges>
</security>
</trustInfo>
このコードの level
属性の値は一例にすぎません。
既定では uiAccess
は "false" です。つまり、属性を省略した場合、またはアセンブリのマニフェストが存在しない場合、アプリケーションは保護された UI にアクセスできなくなります。