0

過去 2 時間、これについてグーグルで検索しましたが、結果が得られなかったので…</p>

XML ファイルを使用してデータを保存するアプリケーションを開発しています。これらのファイルは、プログラムの実行可能ファイルと同じディレクトリに存在するはずです。私が使う:

string filePath = System.IO.Path.GetDirectoryName(Application.ExecutablePath) + "\\xml\\filename.xml";

できます。

Inno Setup でインストール ファイルを作成しました。これも同様に機能し、XML ファイルを目的の場所に正確にコピーします。

インストール フォルダ、[スタート] メニュー アイコン、デスクトップ ショートカットからアプリケーションを直接開いたところ、問題なく動作しました。

プログラムにいくつかの変更を加えてから、プログラムを閉じて再度開始します。すべて問題ありません。保存された変更はすべて XML から読み戻されます。

しかし、その後、指定された XML ファイルを開きましたが、変更はありません!

少なくとも機能しているので気にしませんが、

  1. アプリケーションをアンインストールしてから同じディレクトリに再度インストールすると、以前にインストールしたファイルに加えた変更が残っています!
  2. 何が起こっているのか非常に興味があります。

これは、プログラムがProgram Filesにインストールされている場合にのみ発生します。My Documentsにインストールすると、変更が XML ファイルに表示され、再インストール後にデフォルト設定が期待どおりに復元されます。

私の質問は次のとおりです。

  1. これらの XML ファイルはどこに保存されていますか? 指定されたパスがProgram Filesを指しているのにそこにない場合、どうすればロードできますか?
  2. 明らかに、どうすれば修正できますか?

編集 最終的にこれらのファイルが C:\Users[USERNAME]\AppData\Local\VirtualStore\Program Files[APPNAME] で見つかりました

4

2 に答える 2

1

ローカルのアプリケーション データ フォルダー (Windows 7 の場合は \Users[USERNAME]\AppData\Local\) に保存されている内容を確認します。

あなたのアプリには ProgramFiles フォルダーに保存する権限がなく、保存できる場所、おそらく次の場所に保存されているようです。

String appData = 
    Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);

また、アプリケーションを管理者として実行してみて、xml データへの変更がまだ表示されないかどうかを確認してください。

于 2013-03-14T12:54:45.417 に答える
0

の値を出力できませんか

    System.IO.Path.GetDirectoryName(Application.ExecutablePath)

次に、xmlファイルが保存されている場所を確認できるはずです。コンソールアプリケーションの場合はコンソールを使用して印刷し、WPFの場合はラベルなどに印刷します

于 2013-03-14T12:25:31.667 に答える