File.Exists对于不存在的文件返回true

时间:2010-11-29 21:47:52

标签: c# .net windows windows-vista filesystems

我正在开发一个应用程序,用于在Path.GetDirectoryName(FilePath)中保存文件,其中FilePath = Application.ExecutablePath包含有关许可的一些信息。如果我从VS运行程序它可以正常工作,但如果我制作安装程序并安装然后运行它,程序会认为该文件已经存在。我将程序更改为在FilePath消息框中显示,File.Exists(FilePath)是否返回truefalse。所以我查看了那条路径,启用了显示隐藏和系统文件,F5几次,没有。该文件不存在,但File.Exists(FilePath)返回true。不知道为什么会发生这种情况,我该如何解决呢?

我使用的是Windows Vista,Visual Studio 2010,C#,并使用VS的安装项目创建了我的安装程序。

编辑:我的路径是: C:\ Program Files(x86)\ Helium \ License.xml

这是我的代码的一部分:

        MessageBox.Show("LicenseFileName: " + LicenseFileName); // LicenseFileName: C:\Program Files (x86)\Helium\License.xml
        System.Diagnostics.Process.Start(LicenseFileName);      // Nothing happens
        MessageBox.Show("File.Exists(LicenseFileName): " + File.Exists(LicenseFileName)); // File.Exists(LicenseFileName): true

忘了说我之前已经安装了应用程序,因此该文件曾经存在过。我使用控制面板卸载了。

1 个答案:

答案 0 :(得分:21)

如果要安装到系统文件夹,则可能会启动Windows文件虚拟化并创建每个用户的文件副本。因此,您的文件可能位于%userprofile%\ AppData \ Local \ VirtualStore文件夹

中的某个位置