目录枚举缺失 csrss.exe 和 lsass.exe (c#)
Directory enumeration is missing csrss.exe and lsass.exe (c#)
我正在尝试枚举 C:\Windows\system32
和 C:\Windows\SysWow64
中的文件。但是我缺少文件 csrss.exe
和 lsass.exe
可能还有更多,我只检查了这两个文件。
那些文件在那里,我可以在 total commander 和 explorer 中看到它们。他们只是不在枚举结果中。
List<string> result = new List<string>(Directory.EnumerateFiles("C:\Windows\system32", "*.exe", SearchOption.TopDirectoryOnly));
我尝试使用 DirectoryInfo
而不是 Directory
,结果相同。
也试过这个:
List<string> result = new List<string>(Directory.EnumerateFileSystemEntries("C:\Windows\system32", "*.exe", SearchOption.TopDirectoryOnly));
还有这个:
var dir = new DirectoryInfo("C:\Windows\system32");
var result = dir.EnumerateFiles("*.exe", SearchOption.TopDirectoryOnly);
变量 'result' 不为空,但不包含提到的文件。
框架版本:v4.0.30319
Windows7: 6.1.7601 x64
注意:我知道我可以使用解决方法:dir /a-d /b C:\Windows\system32
然后解析输出。但我想避免这种情况。
这是因为 File System Redirector 将您的请求重定向到 SysWOW64,它不包含这两个可执行文件(它们只被 OS 需要,它总是 运行 他们在 64 位模式下)。
将项目构建为 64 位时,假设您的进程具有足够的权限,您应该会在结果中看到这两个文件。
或者,您可以在 EnumerateFiles
调用之前对 Wow64DisableWow64FsRedirection
进行 P/invoke 调用以禁用文件系统重定向 - 只需确保在完成后重新启用它.
此函数的 Pinvoke 签名如下:
[DllImport("kernel32.dll", SetLastError=true)]
public static extern bool Wow64DisableWow64FsRedirection(ref IntPtr ptr);
我正在尝试枚举 C:\Windows\system32
和 C:\Windows\SysWow64
中的文件。但是我缺少文件 csrss.exe
和 lsass.exe
可能还有更多,我只检查了这两个文件。
那些文件在那里,我可以在 total commander 和 explorer 中看到它们。他们只是不在枚举结果中。
List<string> result = new List<string>(Directory.EnumerateFiles("C:\Windows\system32", "*.exe", SearchOption.TopDirectoryOnly));
我尝试使用 DirectoryInfo
而不是 Directory
,结果相同。
也试过这个:
List<string> result = new List<string>(Directory.EnumerateFileSystemEntries("C:\Windows\system32", "*.exe", SearchOption.TopDirectoryOnly));
还有这个:
var dir = new DirectoryInfo("C:\Windows\system32");
var result = dir.EnumerateFiles("*.exe", SearchOption.TopDirectoryOnly);
变量 'result' 不为空,但不包含提到的文件。
框架版本:v4.0.30319
Windows7: 6.1.7601 x64
注意:我知道我可以使用解决方法:dir /a-d /b C:\Windows\system32
然后解析输出。但我想避免这种情况。
这是因为 File System Redirector 将您的请求重定向到 SysWOW64,它不包含这两个可执行文件(它们只被 OS 需要,它总是 运行 他们在 64 位模式下)。
将项目构建为 64 位时,假设您的进程具有足够的权限,您应该会在结果中看到这两个文件。
或者,您可以在 EnumerateFiles
调用之前对 Wow64DisableWow64FsRedirection
进行 P/invoke 调用以禁用文件系统重定向 - 只需确保在完成后重新启用它.
此函数的 Pinvoke 签名如下:
[DllImport("kernel32.dll", SetLastError=true)]
public static extern bool Wow64DisableWow64FsRedirection(ref IntPtr ptr);