Vistaのデータリダイレクト機能の影響

UACの基本

VistaUAC(User Account Control)機能により、たとえ管理者ユーザとしてログインしていたとしても、(特権ユーザとして起動するという特別な操作をしない限り)デスクトップから起動したプログラムは全て一般ユーザ(Standard User)の権限しか持たないようになっています。この仕組みにより、不正なプログラムがシステムを書き換えるといったリスクを減らすようになっています。

データリダイレクト機能

しかしこのままだと、例えば C:\Program Filesの下や、C:\Windows の下にINIファイルを作りに行くようなレガシーアプリが動作しなくなってしまいます。これを緩和するのがデータリダイレクト機能です。この機能により、プログラム側は C:\Windows の下に保存しているつもりでも、OS側で別の安全な場所にリダイレクトしてくれます。既存のファイルを書き換えようとしていた場合は、copy on writeが実行されます。
例えば、プログラムが C:\Program Filesの下に保存した(つもり)の場合、実際には C:\ユーザ\ユーザ名\AppData\Local\VirtualStore\ProgramFiles の下にリダイレクトされます。

Squeakの動作

C:\Program Filesの下への書き込みがインストール時にだけ実行されるなら問題はありませんが、実行時に発生する書き込みが、互換性のリスクとなります。
Squeakland2005Jを実行した場合、以下のような動作になりました。(※少し訂正しました)

  • 暗号化キー(squeak.keys)が、Windowsにログインするユーザごとに上記のフォルダに作成される。設計とは異なる場所にファイルが保存されますが、実用上問題はないと思います。
  • c:\program files\squeak\pluginにイメージがインストールされているが、イメージを更新すると copy on writeで、ログインユーザ用のファイルが作成されてしまい、c:\program files\squeak\pluginのファイルは更新されない。こっちはSqueakの仕組みに関わる話であり、わりと大きな問題になると思います。

まだVista Securityを勉強中の身ゆえ、まだ回避策を提案するには至ってません、かたじけない。