Microsoft TechED 2006 Yokohama で行われたセッションのレポートです。
うろ覚えかつ急いでメモを取ってたので間違ってる可能性もあります。
PPTの丸写しは避けたいと思ってますがそのままだったらごめんなさい。
-----
UAC機能、その2です。
先述のUAC(ユーザーアカウント制御)の続きです。
前のいくつかのエントリにもあったように、UACが動作しているので、Windowsフォルダ等の重要なフォルダには一般ユーザ権限ではアクセスできなくなっています。
で、たとえば自アプリの情報を、C:\WINDOWS\(Application Name).INI などのINIファイルに保存するソフトウェアの場合。
当然の如く、C:\WINDOWS フォルダにはアクセス制御がかかってるので、INIファイルは保存できません。
これの回避策です。
一つは、UAC対応のアプリケーションに書き換える。
もう一つは、救済策として以下の機能があります。
・ファイルとレジストリの仮想化
要は、C:\WINDOWSに保存したと見せかけて、他のフォルダにリダイレクトしてくれる機能です。レジストリも同じ。
たとえば、%ProgramFiles% にファイルを保存しようとした場合。
実際に書き込み等は行われますが、保存先のフォルダは、
%LocalAppData%\Virtual Store\Program Files
になります。
同じく、%WinDir% に保存しようとした場合。(このパターンが結構多いかも。たとえばINIファイルを保存したりとか)
実際に書き込まれるフォルダは、
%LocalAppData%\Virtual Store\Windows
になります。
あとは、レジストリ。これもUACがかかっていて保存できないので、
HKEY_LOCAL_MACHINE\Software 以下に保存しようとしたときは、
HKEY_CURRENT_USER\Software\Classes\VirtualStore\Machine\Software
以下に保存されます。
ちなみに、Windows XPでは、一般ユーザ(制限ユーザ)のみ、C:\WINDOWS 以下へのアクセス制御がかかっていました。
制限をかけて使っているユーザってあんまり見たこと無いんですよね。
ほとんどのユーザが管理者権限で使ってると思います。そもそも制限ユーザの存在自体知らない人もいるし。
さて、次は何を書こうかな…。Developer向けなものにしようかなぁ。