0

我花了过去两个小时在谷歌上搜索,但没有任何结果,所以……</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 回答