Не удалось найти часть пути 'C: \\ Windows \\ System32 \\ oobe \\ info \\ Фоны - PullRequest
4 голосов
/ 08 июля 2011

Я пытаюсь перечислить все файлы в Windows 7 в C: \ Windows \ System32 \ oobe \ info \ Backgrounds, вызвав следующую строку:

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

Я проверил, что папка существует и имеет файлы, я перешел к ней в командной строке, и все хорошо, но вызов c # не удался.

Вызов GetFiles на C: \ Windows \ System32 \ oobe \ работает нормально. Ничто не отличается в том, что атрибуты папок идут между \ 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);

Ответы [ 2 ]

7 голосов
/ 08 июля 2011

Я почти уверен, что ваша проблема связана с этой статьей , в которой описывается, что не так и как решить проблему. На сайте доступно исправление, которое вы можете установить и должно исправить вашу проблему. Надеюсь, это поможет!

0 голосов
/ 29 октября 2015

Исходя из ответа Icemanind, если вы компилируете приложение .net, решение, которое сработало для нас, - это изменить цель вашей платформы (с AnyCPU) на x64.

Нет необходимости устанавливать исправление.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...