C#访问winevt目录会抛出DirectoryNotFoundException

时间:2017-06-11 08:01:32

标签: c# .net windows io directory

我正在尝试访问我的代码中的目录C:\ Windows \ System32 \ winevt,但我得到了System.IO.DirectoryNotFoundException

我读了这篇帖子: Anyone know why I can't access the winevt folder programmatically in C#?

这意味着在64位操作系统下运行32位应用程序会将我重定向到 SystemWOW64 目录,而解决方法是将我的目录设置为%windir%\Sysnative\winevt。所以我修改了我的代码以符合前面提到的线程中提供的答案,除了它仍然失败。我正在运行 Windows 10企业64位并且Sysnative不存在。

示例代码:

这将返回true:

            string directory = @"C:\Windows\System32";                  
            bool isDirectoryExists = Directory.Exists(directory);

这将返回false:

            string directory = @"C:\Windows\System32\winevt";                  
            bool isDirectoryExists = Directory.Exists(directory);

目录System和SysWOW64中没有winevt目录,并且Sysnative不存在。所以我的问题是,如何访问winevt目录?

1 个答案:

答案 0 :(得分:0)

我的错误是在Windows目录中查找名为Sysnative的实际文件夹,我没有看到它,因此假设代码不起作用。但无论如何我测试了它,Directory.Exists返回true。这是因为Sysnative是一个虚拟文件夹。

返回true:

        string directory = @"C:\Windows\Sysnative\winevt";                  
        bool isDirectoryExists = Directory.Exists(directory);

http://www.thewindowsclub.com/sysnative-folder-in-windows-64-bit