LocalLowという3つのフォルダを用意している。%APPDATA%はRoamingに割り当てられているのだが、では他の2つとの使い分けはどうなるのか。これを満足なレベルで解説してるところがあまり見つからず、自分で簡単に調べてみたのでメモ。第一の答えはkb955555(機械翻訳版)になるだろう。(後で気づいたがTechNetの方に同等内容の公式な日本語訳があった)機械翻訳版はどうも気持ち悪いので頑張って原文を訳してみる。Vistaはユーザと共に移動しないアプリケーションデータにLocalとLocalLowフォルダを使用します。通常、このデータはコンピュータに固有であるか、移動するには大きすぎるものです。Dataフォルダと同じです。WindowsはRoamingフォルダを、ユーザ辞書のような、ユーザプロファイルと共に移動すべきで、コンピュータから独立しているアプリケーション固有のデータに使用します。ドメイン環境で「どのユーザがどのコンピュータを使うか分からない」ような状況でも、ユーザのプロファイルの一部としてどのコンピュータからログインしても使えるべきデータは、サイズが大きすぎない限りRoamingに格納される。ハードウェアに関連があったり、ログイン・ログオフで毎回やりとりするには大きすぎるデータはLocalまたはLocalLowフォルダに格納される。はて、これではLocalとLocalLowの使い分けが分からない。Referenceにあるようだ。この文書は英文のみ、かつかなり長く、今回の素朴な疑問に答えるためだけに読むには骨が折れる。Levelだが、とにかく3行にまとめると以下の通り。level(信頼レベル)というセキュリティ強化の仕組みができた。integrityなプロセスはLocalLowにしか書き込みできない。integrityの代表。いうわけで、LocalとLocalLowの使い分けは書き込むプロセスの信頼性にある。Windowsのセキュリティ機能としては既にユーザアカウントがあるわけだが、同じユーザでも実行するプロセスごとに権限を分けたい、というあたりに目的があるらしい。全文を読んでないのでその価値は判断できないが、「また余計なものを...」という気がしないでもない。ちなみにLocalLowと同様のものはレジストリにもあり、HKCU\Software\AppDataLowになる。levelの開発者視点での話を。いっても実装方法とかの技術的な話ではないけれど。levelの仕組みは要はsandboxの発想で、個別の脆弱性への対応とは別に、プロセス自体を「暴れてもシステムに影響しない砂場」に閉じこめる方法になる。開発者の大部分は、正直こんな面倒な仕組みに乗りたくはないだろう。それならばサーバではもうメジャーになった「丸ごと仮想化」の方が楽だし、根本的だ。マイクロソフトはこんな中途半端な方法を採ったのか。...まぁ言わずもがな、パフォーマンスと独占市場を崩せないからだろう。Explorerの性能はガタ落ちだろうし、OSレベルに持ち込んでるDirectXの力を利用することができなくなる。ファイルのダウンロードや印刷処理なども切り離されるので、マイクロソフトの言うユーザ体験は酷いものになってしまうだろう。Explorerの柔軟な運用を許してしまう。Explorerが実現する機能を他のブラウザが簡単に利用できたり。C/Sはネットワークベースの技術だから、またもや脆弱性の問題が出てくる。マイクロソフトとしては、何とかWindowsの内部で済ませたいのだろう。levelの仕組みだって、C/Sの仕組みと変わらない。integrityのプロセス("ブローカー"プロセス)にファイル保存を要求しているからだ。profile.(もう面倒なので頑張って読んでください)どうせIPCを使うのであればソケットでC/Sでも良かったはずだし、その方が完全な仮想化をも視野に入れることができるのに、そうはしない。levelなんて新たな仕組みをOSレベルで導入する事に比べれば遙かに楽なはずなのに。営利企業なのだし自己の利益を保護する方策は当然なのだけれど。Perl5.010001。