【发布时间】:2013-03-14 12:20:06
【问题描述】:
我在过去的两个小时里用谷歌搜索了这个,但没有任何结果,所以……
我正在开发一个使用 XML 文件来保存数据的应用程序。这些文件应该与程序可执行文件存在于同一目录中。我用:
string filePath = System.IO.Path.GetDirectoryName(Application.ExecutablePath) + "\\xml\\filename.xml";
有效。
我已经在 Inno Setup 中创建了安装文件。这也很有效,将我的 XML 文件准确地复制到我想要它们去的地方。
我直接从安装文件夹、开始菜单图标、桌面快捷方式打开我的应用程序,它工作正常。
我对我的程序进行了一些更改,然后我将其关闭并重新启动。一切都很好:所有保存的更改都从 XML 中读回。
然后我打开指定的 XML 文件并没有任何变化!
我不会打扰,至少它可以工作,但是:
- 当我卸载应用程序然后再次将其安装到同一目录时,对先前安装的文件所做的更改仍然存在!
- 我非常很想知道发生了什么。
仅当程序安装到 Program Files 时才会发生这种情况。如果我将它安装到我的文档,更改会显示在 XML 文件中,并且在重新安装后,默认设置会按预期恢复。
我的问题是:
- 这些 XML 文件存储在哪里,如果指定的路径指向 Program Files 而它们不存在,我该如何加载它?
- 显然,我该如何解决?
编辑 终于在 C:\Users[USERNAME]\AppData\Local\VirtualStore\Program Files[APPNAME] 中找到了那些文件
【问题讨论】:
-
您使用的是哪个 Windows 版本/遇到问题?
-
在 windows vista 和更新版本中,他们确实强化了程序文件目录。我建议不要在那里写。
-
那么最佳实践是什么?将程序文件保存在哪里,以便它适用于 Windows Vista 和更新版本并通过代码轻松访问它们?
-
尝试存储在本地应用程序数据中。
-
同样当数据保存在本地应用程序数据文件夹中时,卸载/安装应用程序和未清理用户数据的问题可能会继续存在,安装程序通常默认情况下不会在卸载过程中删除用户数据。
标签: c# xml program-files