如何防止文件重定向到 VirtualStore 来读/写文件?

2024-05-09

我正在使用 C# 和 .net 2.0

我将程序数据保存在以下文件中:C:\ProgramData\MyProgramName\fileName.xml

安装并运行我的应用程序一次后,我将其卸载(在卸载过程中,我从“程序数据”中删除了所有文件),然后重新安装了该应用程序,并运行了它。

奇怪的是,我的应用程序启动时就好像程序数据中的文件存在一样 - 意味着,即使数据文件被删除,我的应用程序中也有旧数据。

运行时:

File.Exists("C:\ProgramData\MyProgramName\fileName.xml")

尽管我确信该文件不存在,但我得到了“true”。

当我以管理员身份运行该应用程序时,事情变得很奇怪,然后该文件不存在。

经过研究,我发现在没有管理员权限的情况下运行我的应用程序时,而不是得到:

C:\ProgramData\MyProgramName\fileName.xml

I get

C:\Users\userName\AppData\Local\VirtualStore\ProgramData\MyProgramName\fileName.xml

确实有一个文件存在于以前的安装中(我显然没有删除它,因为我不知道它存在)。


因此,请指导我当应用程序在没有管理员权限的情况下运行时如何停止此操作。

我不想在 VirtualStore 文件夹中自动创建任何文件。请讨论所有可能的方法来阻止这种情况。


首先,问问自己,是否需要为所有用户全局保存?

如果不需要,请将文件保存在应用程序数据中,您可以使用以下命令获取路径Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData),它应该总是可靠地扩展到C:\Users\Username\AppData\Roaming\。请注意,该路径对于每个用户来说都是唯一的。

如果你必须这样做,那你就不走运了。在任何 Windows XP 后的 Windows 上,没有可靠的方法来存储所有没有管理员权限(或 UAC)的用户的应用程序数据,这不是非常 hacky,比如将您的数据存储在公共用户中(这可能是可能的,也可能是不可能的,我可以'现在不要检查)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何防止文件重定向到 VirtualStore 来读/写文件? 的相关文章

随机推荐