Tips

Program Filesフォルダにアプリケーションをインストールすることについて

日付2011/11/01
ID76405 (英語原文参照)
バージョンv12
プラットフォームWin

Windows Vista,Windows Server 2008, Windows 7以降,一部のWindowsフォルダは,書き込みプロテクト仕様になりました。そのようなフォルダに書き込みをするのであれば,資格情報(アクセス権限)を昇格させるか,代わりにバーチャルストアですべての書き込みを行なうという選択をしなければなりません。

アプリケーションは,通常,Program Files,あるいは64ビット版Windowsの32ビットアプリケーションであればProgram Files (x86) フォルダにインストールします。この場所は,前述した保護フォルダのひとつです。この場所にインストールされたアプリケーションは,自分自身を書き換えたり,データベースのようなファイルを作成したり書き換えることはできません。

4Dアプリケーションは,この場所に問題なくインストールできます。更新されるようなファイルは何もないからです。しかし,ビルドされたアプリケーションの場合,同じ場所にデータベースファイルが置かれることになるので,対策を講じなければなりません。

アクセス権限の昇格

実行ファイルを右クリックし,「管理者として実行」を選択すれば,保護されたどの場所にも書き込みができるようになります。この動作を定着させたいのであれば,右クリックしてプロパティを選択し,互換性ページの「管理者として実行」項目にチェックを入れます。その場合,アプリケーションを起動するたびにUACプロンプトが表示されることになることに留意してください。

バーチャルストア

不十分なアクセス権限で保護された場所に対する書き込みを実行した場合,その行為は実際のフォルダではなくバーチャルストアと呼ばれる保護されていない場所にリダイレクトされます。Windows 7の場合,そのパスは下記のとおりです。

C:\Users\user\AppData\Local\VirtualStore\

バーチャルストアの動作を確認したいのであれば,4Dを起動し,Program Filesフォルダに新しいデータベースを作成してみてください。後にエクスプローラーでProgram Filesを開いてみると,そこに作成したはずのデータベースがありません。バーチャルストアに移動し,中にあるProgram Filesフォルダをみると,そこにデータベースが作成されたことが確認できます。

このことは,アプリケーションの観点から隠されていることに注目してください。4Dからみれば,作成したファイルは確かにProgram Filesフォルダの中にあります。

注意点

アクセス権限を昇格すれば,実際の場所に書き込みができますが,毎回,UACプロンプトに応じることが煩わしいかもしれません。

バーチャルストアを使用すれば,実体とファイルパスの関係が混乱を招く恐れがあります。たとえば,実際にProgram Filesにファイルが置かれていた場合,そのファイルはバーチャルストアにコピーされ,以後の更新はオリジナルではなくバーチャルストアのコピーに対して行なわれます。その場合,本来のパスにあるほうのファイルは,最新のものではなくなります。

このような問題を避けるため,4DではビルドされたアプリケーションをProgram Filesではなく,マイドキュメントのようなユーザー毎のフォルダ,あるいはボリューム直下に作成された任意フォルダなどにインストールすることを推奨しています。