• 締切済み

Vistaの"Program Files"にインストールすると

Vistaの"Program Files"フォルダにデータベースプログラムをインストールしました。 データベースや設定ファイルは全てインストールフォルダ直下に配置して、参照するようにしてあります。 ところが、プログラムはそれらのファイル参照せずに動作しています。書き込みや削除もできますが、インストールフォルダにあるファイルは更新されていません。 しかしプログラムを起動すると更新内容を正しく表示します。 全ドライブを検索してみましたが、インストールしたフォルダ以外にファイルは見つかりません。 アンインストールしても、更新したデーターベースや設定ファイルは残っているようで、再度インストールし直すと、前に登録した内容が残っています。 試しに更新されない設定ファイルをエディタで編集しようとしたところ、書き込みできませんでした。 インストールフォルダの設定を見たら読み込み専用になっていました。(読み込み専用に設定した覚えはないのですが) 読み込み専用を解除しましたが、やはり書き込み出来ませんでした。 XPの"Program Files"でテストした時は正常に動作しました。 Vistaでも"Program Files"フォルダ以外なら正常に動きます。 Vistaの"Program Files"フォルダにインストールするには何か設定が必要なのでしょうか? OS:Vista Business 開発環境:Visual Studio 2005/VB.NET/Access インストーラー:Windows インストーラー

みんなの回答

  • Evreux
  • ベストアンサー率29% (225/774)
回答No.1

Vistaでは権限のないユーザーがProgram Filesの中を勝手に変更してしまわないように、または権限のあるユーザーでも意図しない変更が起こらないように工夫しています。 Program Files の中身は基本的にそのままにしておき、変更が必要な場合は差分をユーザーのプロファイルの中に(たしか隠しファイルとして)保存します。 プログラムを管理者権限で起動すれば挙動が変わるかもしれません。(たぶんユーザーのプロファイルを使うことはなくなると思います。)

basset
質問者

お礼

自己レスです。一応解決しました。 実行ファイルのマニフェストで requestedExecutionLevel levelを "requireAdministrator" に宣言していないと、Vistaの仮想化機能により C:\Users\\AppData\Local\VirtualStore\Program Files\(フォルダ名) に書き込まれていました。 これは"Program Files"フォルダ以外にもレジストリのシステム"HKEY_LOCAL_MACHINE"に書き込む場合も同様です。 しかし、アンインストール時にはこのフォルダも削除してくれないと困るよMS。

basset
質問者

補足

ありがとうございます。 >Program Files の中身は基本的にそのままにしておき、変更が必要な場合は差分をユーザーのプロファイルの中に(たしか隠しファイルとして)保存します。 確かにそのような動作をしています。 >プログラムを管理者権限で起動すれば 勉強不足な者で申し訳ございません。 管理者権限で起動とは具体的にどのようにすればよいのでしょうか?(ログインで設定されるのでしょうか) そもそも"Program Files"フォルダにインストールできること自体が管理者権限を持っているのだと思っていました。

関連するQ&A

専門家に質問してみよう