前のエントリではWindowsに備わるVirtualStore ファイル・レジストリ仮想化について触れ、ファイル削除で対応したと記載しました。
しかし、こんなことではVirtualStore ファイル・レジストリ仮想化はへこたれず、再び同じ状況(回避ファイルが復活)となってしまいました。
そもそもVirtualStore ファイル・レジストリ仮想化という機能により、VirtualStore フォルダにファイルが生成されるのはUAC(User Access Control)によるものだそうです。
VirtualStore の影響を排除するには
- UACの無効化
- VirtualStore ファイル・レジストリ仮想化の無効化
- VirtualStore ファイル・レジストリ仮想化が働かないアプリの実装
マニフェストファイルに実行権を明記
の必要があるそうです。
UACの無効化は危険なので、選択肢から除外です。
VirtualStore ファイル・レジストリ仮想化の無効化もローカルセキュリティポリシーやグループセキュリティポリシーを変更すれば対応できますが、これはアプリ上の問題なのでこちらの選択肢もありませんね。
という訳で最後の選択肢となったVirtualStore ファイル・レジストリ仮想化が働かないアプリの実装を行いました。
マニフェストの埋め込みは行っていたのですが、セットアッププロジェクトを介することで拾われていない状態になってしまったようです。Visual Studioを利用したマニフェストの埋め込みについては下記 参考サイトを参照しています。
お困りの方も参考にしてみてください。
EPL-SIMも1.0.7にバージョンアップします。
参考サイト
»アプリケーションの互換性について – ファイルが見つからない VirtualStore の波紋 from アプリ仮想化奉行
».NET Vista対応 その5 ビルド時にマニフェストファイルを埋め込む from yan note
»Windows SDK の mt.exe を使用して、既存の exe を常に管理者権限で起動を求めるように変更する from SQLの窓