安装在Program Files中的应用程序保存的XML:它在哪里?

时间:2013-03-14 12:20:06

标签: c# xml program-files

我花了最后两个小时谷歌搜索没有结果,所以......

我正在开发一个使用XML文件来保存数据的应用程序。这些文件应该与程序可执行文件存在于同一目录中。我用:

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

有效。

我在Inno Setup中创建了安装文件。这也很有效,将我的XML文件复制到我想要的位置。

我直接从安装文件夹,从“开始”菜单图标,从桌面快捷方式打开我的应用程序,它可以正常工作。

我对我的程序进行了一些更改,然后关闭它并再次启动它。一切都很好:所有保存的更改都从XML中读回。

但是我打开指定的XML文件并且没有任何更改!

我不会打扰,因为至少它有效,但是:

  1. 当我卸载应用程序然后再次将其安装到同一目录时,对以前安装的文件所做的更改仍然存在!
  2. 我很想知道发生了什么事。
  3. 仅当程序安装到 Program Files 时才会发生这种情况。如果我将其安装到我的文档,则更改将显示在XML文件中,重新安装后,将按预期恢复默认设置。

    我的问题是:

    1. 这些XML文件存储在哪里,如果指定的路径指向 Program Files 并且它们不在那里,如何加载它?
    2. 显然,我该如何解决?
    3. 修改 最后在C:\ Users [USERNAME] \ AppData \ Local \ VirtualStore \ Program Files [APPNAME]

      中找到这些文件

2 个答案:

答案 0 :(得分:1)

检查保存在本地应用程序数据文件夹中的内容(对于Windows 7,它是\ Users [USERNAME] \ AppData \ Local \)。

看起来你的应用程序没有权利在ProgramFiles文件夹中保存东西并将其保存在可能的位置,可能是在这个位置:

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

您也可以尝试以管理员身份运行应用程序,并检查xml数据的更改是否仍未显示。

答案 1 :(得分:0)

不能打印出

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

那么你应该能够看到你的xml文件的存储位置,如果它是一个控制台应用程序,只需使用Console打印,如果它是WPF打印到标签或其他东西