我正在尝试通过调用以下命令列出 C:\Windows\System32\oobe\info\Backgrounds 下 Windows 7 上的所有文件:
const string logonScreenBackgroundPath = "C:\\Windows\\System32\\oobe\\info\\Backgrounds";
DirectoryInfo dInfo = new DirectoryInfo(logonScreenBackgroundPath);
string[] backgroundFiles = Directory.GetFiles(logonScreenBackgroundPath);
但是,我在 GetFiles 调用中遇到异常:找不到路径 'C:\Windows\System32\oobe\info\Backgrounds 的一部分
我验证了文件夹存在并且有文件,我在命令提示符下 cd 到它,一切都很好,但是 c# 调用失败。
不过在 C:\Windows\System32\oobe\上调用 GetFiles 工作正常。就\oobe 和\info 之间的文件夹属性而言,没有什么不同。
经过进一步调查,这看起来像是 64 位问题。当我为“AnyCpu”构建我的项目时,发现该文件夹没有问题。问题是我的项目由于依赖关系必须为 x86 而不是 AnyCpu 编译。
解决方案:
看起来这是一个已知问题,MS 已针对它发布了修补程序。问题是由于文件系统重定向。
我现在使用以下命令在调用线程上禁用重定向:
[DllImport("kernel32.dll", SetLastError = true)]
public static extern bool Wow64DisableWow64FsRedirection(ref IntPtr ptr);
IntPtr ptr = new IntPtr();
bool isWow64FsRedirectionDisabled = Wow64DisableWow64FsRedirection(ref ptr);
最佳答案
我很确定您的问题与 this article 相关,它描述了问题所在以及如何解决问题。该站点提供了一个修补程序,您可以安装该修补程序并且应该可以解决您的问题。我希望这有帮助!
关于c# - 找不到路径 'C :\\Windows\\System32\\oobe\\info\\Backgrounds 的一部分,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6617530/