找不到路径'C:WindowsSystem32oobeinfo背景的一部分

本文关键字:WindowsSystem32oobeinfo 背景 一部分 路径 找不到 | 更新日期: 2023-09-27 18:01:25

我试图通过调用以下命令列出Windows 7中C:'Windows'System32'oobe'info'背景下的所有文件:

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'背景的一部分

我验证了文件夹存在并且有文件,我在命令提示符下cd到它,一切正常,但是c#调用失败。

在C:'Windows'System32'oobe'上调用GetFiles可以正常工作。'oobe和'info的文件夹属性没有什么不同。

经过进一步调查,这看起来像是64位问题。当我为"AnyCpu"构建项目时,发现文件夹没有问题。问题是我的项目必须为x86而不是AnyCpu编译,因为依赖关系。

解决方案:看起来这是一个已知的问题,微软已经发布了一个修复程序。问题是由于文件系统重定向。

我现在用下面的命令禁用调用线程的重定向:

[DllImport("kernel32.dll", SetLastError = true)]
public static extern bool Wow64DisableWow64FsRedirection(ref IntPtr ptr);
IntPtr ptr = new IntPtr();
bool isWow64FsRedirectionDisabled = Wow64DisableWow64FsRedirection(ref ptr);

找不到路径'C:WindowsSystem32oobeinfo背景的一部分

我很确定你的问题与这篇文章有关,这篇文章描述了什么是错误的以及如何解决问题。网站上有一个热修复程序,您可以安装它,它应该可以解决您的问题。我希望这对你有帮助!

根据Icemanind的答案,如果你正在编译一个。net应用程序,一个对我们有效的解决方案是将你的平台目标(从AnyCPU)更改为x64。

无需安装hotfix.