どうも、仮想化について、えらい思い違いをしていた。
まず、.NET アプリケーションが出力するものは仮想化されない。CLR の環境がそうするのか、あるいはデフォルトでマニフェストがくっつくのか?
とにかく、%ProgramFiles% や、%WINDIR% への書き込みはできない。これは、単にファイルが作れないだけでなく、SaveFileDialog で選択できない。この辺、28日にデモでお見せできます。
しかし、ピュアな Win32 アプリケーションなら、マニフェストが付いていなければ・・・おかしいなぁ?SxS のマニフェストが付いていると思うんだけどなぁ?
そうだよな。マニフェストじゃなくて、マニフェスト中の昇格情報だろうな。
とにかく、ピュアな Win32 なら、書き込みができる。
そして、仮想化される。ここで、.NET なアプリケーションでやろうとしていたのが間違いだった、と。
もう一つ。
仮想化されたファイルは、そのアプリケーションを動かしたアカウントなら見れると思っていた。
ところが、そのアカウントで起動させている explorer にはマニフェストが付いている。したがって、explorer の入出力は仮想化されない。
つまり、アプリケーションが %ProgramFiles% というか、実行ファイルがあるのと同じディレクトリにログをはいていたとする。そしてこのログは、notepad で見る仕様だったとする。
そうすると、notepad にもマニフェストが付いているので、こいつでは見られないということになる!!
当然、.NET アプリケーションからも見えない。
ピュアな Win32 アプリケーションで、マニフェストが付いていないものなら見える・・・のだろう。
スクリーンショットを張る。
右上の保存ファイル選択ダイアログには、「保守情報.csv」というファイルがある。しかし、explorer にはそれがない。
なお、保存ファイル選択ダイアログから explorer 上の %ProgramFiles% へドラッグすると、同じ名前のファイルがあるというエラーになった。また、notepad へドラッグすると、ファイルにアクセスできないというエラーになった。
投稿日時 : 2007年4月13日 22:40