VirtualStoreの悲劇(拡張子)
2010年11月05日
Windous Vista/7/8で導入されている[VirtualStore]ですが色んな悲劇があるようです。[VirtualStoreの悲劇]では[VirtualStore]で起こる悲劇をジャンル別に紹介します。VirtualStoreとは何か、、、
基本的な事を[VirtualStoreの悲劇(ファイル操作)]に書いています。
今回は[新規作成(出力/保存)出来ないファイル(拡張子)がある]と言う不思議な現象について紹介します。
例えば、[C:\Program Files]に[Test]というフォルダを作って、テストプログラム[a.exe]をコピーします。このテストプログラム[a.exe]はカレントのディレクトリに[b.txt]というファイルを作成する仕様だとします。
このテストプログラム[a.exe]を[管理者では無い状態]で実行すると、[C:\Users\UserName\AppData\Local\VirtualStore\Program Files]というフォルダに[b.txt]というファイルが作成されます。
しかし、このテストプログラム[a.exe]を[b.bat]というファイルを作成するように仕様変更すると、実行時に[アクセスが拒否されました]というメッセージのエラー(例外)が発生します。
拡張子[txt]は良いけど拡張子[bat]はダメという事です。[アクセス拒否]される拡張子は[bat]以外に[exe]も同様です。
セキュリティ的なガードで安心なのかもしれませんが、この事実を知らないプログラマーには恐ろしい悲劇が待っているかもしれません。
ちなみに、このテストプログラム[a.exe]を[管理者として実行]すれば、[C:\Program Files\Test]に[b.bat]が正常に作成されてエラーは発生しません。また、このテストプログラム[a.exe]をシステムフォルダ(C:\WindowsやC:\Program Files等)以外で実行すれば、カレントディレクトリに[b.bat]が正常に作成されてエラーは発生しません。
※<参考>VirtualStoreのPATH
C:\Users\UserName\AppData\Local\VirtualStore\Program Files
C:\Users\UserName\AppData\Local\VirtualStore\ProgramData
C:\Users\UserName\AppData\Local\VirtualStore\Windows
※<参考>UserNameはログインユーザ名
その他の[VirtualStoreの悲劇]関係の情報はこちらです。
VirtualStoreの悲劇(アップグレード)
スポンサーサイト