正直な話、Vistaをインストールして10分で、UACに嫌気がさした。ウゼェ。
そして悟った。「これは嫌がらせなのだ」と。
さて、本当に大切なことは何だろう?
というか、そもそも、UACって何のための機能だっただろう?
今さら疑問に思って調べてみたのだが、ウィルスやスパイウェアといった悪意のあるソフトウェアが、知らないうちに管理者権限で動作することによって、コンピュータはもとよりネットワークにまで甚大な被害をもたらすことを食い止めるというのが趣旨であるらしい。
日常的にアプリを管理者権限で使っていれば、そりゃあ便利だが、乗っ取られた時の危険も大きい。
乗っ取られても危険を最小限に抑えようというわけだ。
当初の疑問に戻ろう。本当に大切なことは何だろう?
それは「乗っ取られても被害を最小限に抑えるようにアプリを作ること」だ。
乗っ取られても大丈夫な作りってのは、Program Filesにファイルを置かないこととか、HKEY_LOCAL_MACHINEにデータを書き込まないこととかじゃない。
書き込むか書きこまないかという問題じゃなく、書き込めないように縛るというところがキモなのだ。
書き込む気がなくても、書き込める権限があれば、乗っ取られたら危険なのだから。
実はこの「書き込めないように縛る」というのは、UACのない2003以前のWindowsでも可能なことだった。
ImpersonateLoggedOnUserとかCreateRestrictedTokenとかいうAPIを使えば、自分の権限を意図的に低くして実行するアプリを作ることができる。
こういうことをちゃんとやるアプリが「乗っ取られても大丈夫なアプリ」なのだ。
本来、すべてのアプリはこういう作りになっているべきだった。
ところが、こんな、縛られて喜ぶようなマゾい機能、進んで使いたがる奴がいないのは目に見えている。
結果として、潜在的に危険なアプリが世の中に氾濫し、それに乗じてウィルスも氾濫した。
それに痺れを切らしたマイクロソフトが打ち出した強硬策がUACだ。
世の中のあらゆるアプリを、喜んで縛られるようなマゾに強制的に調教してしまう。「一億総マゾ化計画」である(これ、擬人化したらえらいことになりそうだな…)。
今一度問おう。本当に大切なことは何だろう?
UAC下では、「管理者権限で実行することが必要なアプリ」であることを示すために、マニフェストにrequestedPrivilegesという記述をすることができる。
ところがこれ、「より高い権限が必要」であることは示せても、「より低い権限で充分」を示すことはできない。
「より低い権限で充分」なんて低姿勢、進んで申し出ることはなかなか無いかもしれない。だが、ややこしいAPIをいくつも呼び出すのに比べたら、マニフェストにちょっと書くほうがずっと楽じゃないか。
どうして、そういう記述をサポートしてくれなかったのか、理解に苦しむところである。
また、「より低い権限で充分なんて自分からは申し出ない」のは、今までの常識がそうだったからだ。
UACはこの常識に変革を迫る。より低姿勢に低姿勢に、ヘコヘコしないと満足に実行させてもらえなくなってしまった。
そんな抑圧下で一年ばかり暮らしてみれば、きっとみんな分をわきまえるだろう。
分不相応な権力を持たなくても、慎ましく暮らしていければ十分。世界中のアプリがそうなったとき、UACが目指したセキュアコンピューティングは達成される。
何度でも問おう。本当に大切なことは何だろう?
それは、管理者の権限を制限することじゃない。管理者権限を与えられても、自らそれを放棄することだ。あるいは、最初から管理者権限を要求しないことだ。
いずれは、マニフェストに一言書けば、あるいは書かなくても、低い権限が与えられて実行されるのがデフォルトになるだろう。ImpersonateナントカといったヤヤコシイAPIを自前で呼び出さなくても、OSがあらかじめ呼び出した状態で実行してくれるようになるだろう。
これはまさに今、UACが行っていることだとは思っていない。俺の描く未来像は、ユーザーは完全な管理者権限でログインしていても、実行されるアプリは自動的に低権限状態になることだ。ユーザーの権利を制限することなく、アプリの権利だけを制限することだ。
だが、現在の多くのアプリは、そういった低権限状態での実行に対応していない。無駄に高い権限を要求する。
そんな現状では、管理者権限を制限するというアプローチも仕方のないものだったのだろう。
UACとは、低姿勢なアプリが増えるまでの過渡的措置であり、そういったアプリを増やすための強制的措置であると思う。
いつかの総理大臣が言った「痛みを伴う改革」の具現である。Vistaは改革を断行した。
願わくば、その先に、理想郷がありますように。