UACは、Windows Vistaで導入された新しいセキュリティ機能です。これは、管理者ユーザーから管理者グループや管理者特権を分離し、通常時は標準ユーザーとして振る舞い、管理者権限を必要とする場合に、UACの昇格プロンプトを表示して確認を求めたり、自動承認で続行したりします。
Windows XPの時代、管理者ユーザーでログオンして作業するセキュリティ上のリスクは分かっていても、管理作業のためにログオンし直すのが面倒だからという理由で、管理者ユーザー(それも、ビルトインAdministratorをそのまま使う場合も)を日常的に使用する状況が数多く見られました。その状況を踏まえて導入されたセキュリティ機能の1つがUACです。
UACはWindowsの重要なセキュリティ機能であるため、UACを無効化するとUWPアプリが使えなくなるのは“セキュリティ上の理由”であると広く信じられてきたように思います。筆者も、なんとなくそう思っていたのかもしれません。UACを無効化したり、ビルトインAdministratorを有効化したりする理由がないため、深く考えていませんでした。
あらためて考えてみると、どうやらセキュリティ上の理由ではないようです。勘違いしないでください。UACとUWPアプリの関係の話です。セキュリティ上の理由から、UACは無効化すべきではありません。
UACの無効化でUWPアプリが使えなくなるのは、セキュリティ上の理由ではないということを裏付けるものの1つが、Microsoftの公式ドキュメントや公式ブログが見つからないことです。
Windows 10の初期リリース(バージョン1507とも呼ばれます)およびバージョン1511(November Update)の新機能に関する公式ドキュメントに、UACとUWPアプリに関する記述を見つけました。日本語化されたドキュメントも用意されていますが、UACに関する部分の翻訳が適切ではないため、筆者独自に訳しました。
You should not turn off UAC because this is not a supported scenario for devices running Windows 10. If you do turn off UAC, all Universal Windows Platform apps stop working.
(筆者訳:UACを無効にすることはWindows 10を実行するデバイスではサポートされないシナリオであるため、UACを無効にしないでください。UACを無効にすると、全てのUWPアプリは機能しなくなります。)
UACの無効化でUWPアプリが使えなくなるのは、UACの無効化が想定されていないシナリオだからであって、セキュリティ上の理由であるとは書かれていません。Windows 10 バージョン1607、バージョン1703、バージョン1709の新機能を説明するドキュメントには、UACに関する新しい記述はありません。また、Windows 8/8.1向けの古いドキュメントにも、セキュリティ上の理由を説明したものは見つかりませんでした。
考えてみれば、Microsoft Edgeもその他のUWPアプリも「アプリコンテナ(AppContainer)」と呼ばれるサンドボックス環境で隔離され、実行されます。アプリコンテナは、低い整合性レベル(低い整合性レベルから高い整合性レベルへのアクセスは制限される)で実行され、通常のデスクトップアプリよりもできることがかなり制限されています。
本連載の第98回で説明したように、UWPアプリはファイルシステムの読み書きや印刷、カメラなどのデバイス、ネットワーク接続を直接行うことはできません。OSが提供するブローカーや使用が許可されたケーパビリティという仕組みを介してのみ行えるようになっています。このことは、UACの無効化でUWPアプリが使えなくなるのはセキュリティ上の理由ではないということを裏付ける、もう1つの理由です。
以下の画面4と画面5は、どちらもWindows 10 バージョン1709で電卓を実行し、Windows Sysinternalsの「Process Explorer」を使用して、プロセスの「Security」タブを開いたところです。
画面4はUACが有効な管理者ユーザーでログオンして電卓を実行した場合、画面5はUACが無効(既定)のビルトインAdministratorでログオンして電卓を実行した場合のものです。画面4では、UACにより管理者グループ(Administratorsグループ)が無効化されていることが分かります。画面5では、管理者グループが有効なままですが、画面4と同じく、アプリコンテナが「整合性レベル低(Low Mandatory Level)」で動作しており、ビルトインAdministratorが持つ数多くの特権が無効化され、画面4と同じ特権レベルで動作しているのが分かるでしょう。
このように、アプリコンテナ内では、通常のWin32アプリのUACによる特権の分離とは別の方法で分離されているのです。ちなみに、通常のWin32アプリの場合、UACが有効で標準ユーザーの権限で動作するプロセスは「整合性レベル中(Medium Mandatory Level)」、管理者権限に昇格して動作するプロセスは「整合性レベル高(High Mandatory Level)」を持ちます。アプリコンテナ内は、UACの有無に関係なく、それよりも低い整合性レベル(Low Mandatory Level)で動作するのです。
Windows 10 バージョン1607からバージョン1703の間、およびバージョン1703とバージョン1709の間におけるUACとUWPアプリの関係の変化は、意図された仕様変更かもしれませんし、単にバグなのかもしれません。しかし、筆者が挙げた2つの裏付けに、確かにそうかもしれないと納得してくれた人もいるでしょう。
これと類似した問題に、次のものがあります。類似しているのは“UACが無効化された環境を想定していない”という点についてです。こちらは、Windows 10 バージョン1709の時点では、まだ解消されていないようです(画面6)。
岩手県花巻市在住。Microsoft MVP:Cloud and Datacenter Management(Oct 2008 - Sep 2016)。SIer、IT出版社、中堅企業のシステム管理者を経て、フリーのテクニカルライターに。Microsoft製品、テクノロジーを中心に、IT雑誌、Webサイトへの記事の寄稿、ドキュメント作成、事例取材などを手掛ける。個人ブログは『山市良のえぬなんとかわーるど』。近著は『Windows Server 2016テクノロジ入門−完全版』(日経BP社)。
Copyright © ITmedia, Inc. All Rights Reserved.