2013-03-08 73 views
2

有没有人知道'etc'在目录枚举方面有什么特别之处,有没有其他人喜欢它,以及如何避开它是不可见的?Windows System32 drivers etc和GetDirectories

public class Foo 
{ 
    [Test] 
    public void Etc() 
    { 
     var etc = new DirectoryInfo(@"C:\Windows\System32\drivers\etc"); 
     Assert.True(etc.Exists); 

     /* Expected: not <empty> But was: <empty> */ 
     Assert.IsNotEmpty(etc.Parent.GetDirectories(etc.Name)); 
    } 
} 
+0

你可以在Windows资源管理器中击中该文件夹吗? – 2013-03-08 13:42:38

+0

如果以管理员身份运行代码,Assert是否返回true?或者,如果您已将文件夹选项更改为“显示隐藏文件”? – 2013-03-08 13:43:06

+0

@Michael是的,资源管理器显示它,甚至文件打开对话框自动完成它,以及控制台的标签自动完成。 – 2013-03-08 13:48:07

回答

3

您正在64位计算机上以32位进程运行代码。而你看到的file system redirector

C:\Windows\system32\drivers\etc的影响是不重定向(它记录为来自重定向除外),所以是C:\windows\system32\drivers\etc两个一个32位或64位进程。

但是,如果您在32位进程中运行,则在步进到C:\windows\system32\drivers时,将重定向到C:\Windows\SysWow64\drivers。该目录下面没有etc目录。

+0

和BOOM去炸药!我只是在同一条路上,谢谢验证我对我的信仰至少是正确的! – 2013-03-08 13:54:12

+0

现货,谢谢!有没有办法获得“真正”的路径,即得到'.Parent.FullName'显示'SysWOW64'? – 2013-03-08 14:06:18

+0

@IlyaKozhevnikov - 我没有立即意识到这样做的方法。看看明显的地方(即旁边链接的文章中提到的其他功能),我没有看到任何可能的本地功能,更不用说.NET的任何有用的东西了。 – 2013-03-08 14:12:55

0

嗯......这可能是一个权限问题(读权限可能),但你可能会得到一个错误,如果是这样的话。

看看它是否显示使用Directory.GetDirectories(@"C:\Windows\System32\drivers")方法。

这里是documentation

相关问题