none
Vistaでの共通ファイルフォルダーに関して RRS feed

  • 質問

  • 本体プログラムAとその立ち上げの条件を設定するプログラムBを作っています。
    立ち上げの条件設定の値を保管するファイルは
    共通ファイルフォルダー(C:\Program Files\Common Files\abc\)に置くようにしています。
    A,BはVB6.0で作成され、VC2008のMFCのDLLを利用しています。

     

    この3つのファイルをVS2008のインストーラーで作成したものでインストールし動かしますと、
    立ち上げ条件設定プログラムBで変更しセーブした値が、本体のAに反映され、
    上手く動いているように思えます。

     

    ところが、それぞれをコンパイルリンクしExeファイルa,bを作り直接動かすと、
    設定プログラムbはインストールしたものと同期が取れていますが、
    本体プログラムaがまったく初期値のままで変更の値が反映されません。
    (aだけがアイコンに盾のマークが付き毎回、許可を与えないといけません。
     また、右ボタンで、管理権限で一度動かしてもダメです。なぜでしょう?)

     

    よく調べてみると、本体プログラムaだけが共通ファイルフォルダーに
    ある立ち上げ条件設定ファイルを読んでいるようで正しく、
    逆に、他の3つのプログラムが、どこかにある初期条件ファイルを読んで
    いるようでダメなうに思えます。

    アンインストールも出来ないよう(共通ファイルフォルダーのものは出来ている)。

     

    以下、そう考えた理由です。
    立ち上げ条件設定プログラムで変更したにも関わらず、
    1.共通ファイルフォルダーにある立ち上げ条件設定ファイルの日付が変わらない。
    2.共通ファイルフォルダーにある立ち上げ条件設定ファイルを一般のディレクトリに
      コピーし中身を見てみると変更前の値のままである。
    3.アンインストール後、再インストールしたら、アンインストール前の
      値が変更されたものが反映される。
      (OSに以前のものが張り付いてしまって困ってしまいます)


    立ち上げ条件設定ファイルを手動で私が消したことが悪影響を
    与えているのかもしれませんが、どう考えたら良いかよろしくお願いします。

    2008年12月2日 8:47

回答

  •  Windows VistaではWindowsフォルダ以下やProgram Files以下には一般ユーザーでのアクセス権がありません。

     ただし過去のアプリケーションとの互換性を保つためにバーチャルストアにリダイレクトされ格納されます。

     保存される場所は、「%LOCALAPPDATA%\VirtualStore」以下にProgram Filesフォルダが作成されているはずなので確認してみてください。(%LOCALAPPDATA%は環境変数です)

     

     対応策としては、VistaではProgram FilesやWindowsフォルダに設定ファイルを保存する事は推奨されていないので、別の場所に保存すべきだと思われます。

     

    2008年12月2日 12:12

すべての返信

  •  Windows VistaではWindowsフォルダ以下やProgram Files以下には一般ユーザーでのアクセス権がありません。

     ただし過去のアプリケーションとの互換性を保つためにバーチャルストアにリダイレクトされ格納されます。

     保存される場所は、「%LOCALAPPDATA%\VirtualStore」以下にProgram Filesフォルダが作成されているはずなので確認してみてください。(%LOCALAPPDATA%は環境変数です)

     

     対応策としては、VistaではProgram FilesやWindowsフォルダに設定ファイルを保存する事は推奨されていないので、別の場所に保存すべきだと思われます。

     

    2008年12月2日 12:12
  • ユーザーのアプリケーションデータフォルダに変更して上手く行くようになりました。

    ところで、全ユーザー共通のフォルダーをVS2008のインストラーは指定することは出来ないのでしょうか?

     

    2008年12月3日 7:11