支援技術のセキュリティに関する考慮事項

支援テクノロジは、Windows デスクトップで実行され、アクセシビリティ ユーザーがオペレーティング システムやコンピューター上で実行されている他のアプリケーション (新しい Windows UI のアプリケーションを含む) と対話するのに役立つアプリケーションです。 支援技術アプリケーションは、オペレーティング システムやその他のアプリケーションから情報を取得し、ユーザーがアクセスできる方法で情報を提示することによって機能します。 支援技術アプリケーションは、ユーザーからの入力に基づいて、オペレーティング システムやその他のアプリケーションをプログラムで "ドライブ" することもできます。

支援技術アプリケーションの性質上、プロセスの境界を越え、自身よりも高い整合性レベル (IL) で実行されるプロセスにアクセスできる必要があります。 (支援技術アプリケーションは、中程度の IL で実行されます。たとえば、ユーザーが管理特権を必要とするタスクを実行しようとすると、続行する同意をユーザーに求めるダイアログ ボックスが表示されます。 このダイアログ ボックスは、より高い IL で実行され、悪意のあるソフトウェアがユーザー入力をシミュレートできないように、クロスプロセス通信から保護します。 同様に、デスクトップ ログオン画面は、他のプロセスからアクセスされないように、より高い IL で実行されます。

支援技術アプリケーションは、通常、保護されたシステム UI 要素、またはより高い特権レベルで実行されている可能性がある他のプロセスにアクセスする必要があります。 そのため、支援技術アプリケーションはシステムによって信頼され、特別な特権で実行する必要があります。

より高い IL プロセスにアクセスするには、支援技術アプリケーションがアプリケーションのマニフェストで UIAccess フラグを設定し、管理者特権を持つユーザーによって起動される必要があります。

Note

アクセス特権は、次のように制限されます。

  • マニフェストに UIAccess がないアプリケーションは、中程度の IL で始まり、昇格された ("medium+" IL) プロセス UI にアクセスできません。
  • マニフェストに UIAccess があり、管理者グループに属していないユーザーによって起動され、"medium+" IL として起動され、管理者特権の UI にアクセスできないアプリケーション ( 右クリック -> 管理者として実行するアプリなど、"高" IL として実行するものは何もありません)。
  • アプリケーションには UI アクセスがあり、管理者ユーザーが "高" IL として起動し、同じ IL を持っているため、管理者特権の UI にアクセスできます。

UIAccess は、プロセスが IL 境界を上に移動するのに十分ではありません。

高い IL プロセスにアクセスできることに加えて、これらの特権を持つ支援技術アプリケーションは、いつでも z オーダーで最上位のアプリケーションとして実行できます。つまり、ユーザーが必要なときにいつでも支援技術アプリケーションを表示して使用できます。

重要

上記のどのシナリオでも、システム IL で実行されている UI にアクセスできます。 これは、システム (およびシステム IL) のユーザー アカウント制御 (UAC) デスクトップでプロセスが起動した場合にのみ可能です。 この場合、UIAccess の設定は無効です。

支援技術アプリケーションの UIAccess 要件

支援技術アプリケーションは、システムとアプリケーションから情報を取得するために、デスクトップと新しい Windows UI で実行されている他のプロセスと対話する Windows Windows デスクトップ アプリケーションです。 その後、支援技術アプリケーションは、アクセシビリティ ユーザーに情報を提供できます。

支援技術アプリケーションは、アプリケーション マニフェストで UIAccess フラグを設定することで、他のプロセスにアクセスします。 UIAccess フラグを使用するには、支援技術アプリケーションが次の要件を満たしている必要があります。

  • アクセシビリティ シナリオの情報を提供するために、別のアプリケーションからの情報を表示、操作、または反映する必要がある
  • この情報を取得または表示するには、最上位ウィンドウとして を実行する必要があります。

UIAccess を使用するには、支援技術アプリケーションで次の操作を行う必要があります。

  • 証明書で署名して、より高い特権レベルで実行されているアプリケーションと対話します。
  • システムによって信頼されます。 アクセスを求めるユーザー アカウント制御 (UAC) プロンプトが必要なセキュリティで保護された場所にアプリケーションをインストールする必要があります。 たとえば、Program Files フォルダーなどです。
  • uiAccess フラグを含むマニフェスト ファイルを使用してビルドします。

UIAccess は使用しないでください。

  • 支援技術ではないアプリケーション別。

  • 対象とするアクセシビリティ シナリオに関連しない情報または UI を表示する支援技術アプリケーション。

  • 新しい Windows UI で他のアプリケーションの上に表示するだけのアプリケーション。

    Note

    新しい Windows UI 用に開発されたアプリケーションには、使用可能なオプションとして UIAccess がありません。

     

アプリケーション マニフェスト ファイルでの UIAccess の設定

保護されたシステム 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 にアクセスできません。

Windows セキュリティ、アプリケーションの署名、マニフェストの作成の詳細については、MSDN の 「Windows Vista および Windows Server 2008 Developer Story: Windows Vista Application Development Requirements for User Account Control (UAC)」 を参照してください。

UI オートメーションの基礎