我正在使用带有.net 3.5的C#语言。
我将程序数据保存在文件中:C:\Program Data\MyProgramName\fileName.xml
安装并运行我的应用程序一次后,我卸载了它(在卸载期间,我从“程序数据”中删除了所有文件),然后重新安装应用程序并运行。
奇怪的是,即使数据文件被删除,我的应用程序启动时仍会像“程序数据”中的文件存在一样 - 这意味着我在应用程序中拥有旧数据。
运行以下代码时:
File.Exists("C:\Program Data\MyProgramName\fileName.xml")
我得到了“true”的结果,即使我确定文件不存在。
当我以管理员身份运行应用程序时,事情变得更加奇怪,然后文件不存在。
经过研究,我发现当我使用没有管理员权限的应用程序运行时,而不是获得:“C:\Program Data\MyProgramName\fileName.xml”,我会得到“C:\Users\userName\AppData\Local\VirtualStore\ProgramData\MyProgramName\fileName.xml”,并且确实存在来自以前安装的文件(我显然没有删除,因为我不知道它的存在)。
因此,这个文件在程序数据下有一些虚拟路径。
编辑:
我发现在虚拟存储中删除旧文件后,我的应用程序突然能够找到正确的文件。(我没有在程序数据下的文件中做任何更改。)
我的问题是:
1. 为什么会发生这种情况? 2. 如何防止它发生?
提前谢谢。