File.Exists返回true,而不是在Directory或VirtualStore中

时间:2013-06-14 01:16:02

标签: c# .net scheduled-tasks console-application

我遇到一个与this question here

类似的小问题

无论其

代码是文字:

if(!File.Exists(@"C:\Windows\System32\Log.txt"))
{
    //Create file
} else
{
    //Load file
}

然而它总是进入else块,因为File.Exists总是返回true,但文件不存在(或者我找不到它)

该文件不在指定目录中

  

C:\ Windows \ System32下\ log.txt的

并且它不在

  

%USERPROFILE%\应用程序数据\本地\ VirtualStore \ log.txt的

(userprofile是运行计划任务/控制台应用程序的用户)

请注意,我不打算将此文件存储在System32文件夹中,这是我作为Windows 7计划任务执行的C#控制台应用程序 - 并且没有意识到计划任务正在设置默认启动-in目录为C:\ Windows \ System32 \

我的好奇心让我对这些文件的位置变得更好,而且我还想清理任何浮动文件(如果它们确实存在的话)。

最后这是.NET 3.5。

1 个答案:

答案 0 :(得分:2)

引用c:\ windows \ system32时存在两种可能性。您已经注意到,它可以重定向到%userprofile%\ AppData \ Local \ VirtualStore。另一种:如果你在64位系统上以32位进程运行,你将自动被重定向到c:\ windows \ syswow64。

检查c:\ windows \ syswow64中是否存在log.txt。如果要引用系统上的某些位置,如c:\ windows \ system32 \或c:\ program files \,则必须将构建配置更改为x64或“AnyCPU”。