При взвешивании в этот поздний срок GetFiles не всегда возвращает все файлы, и я также не выяснил, почему.Вот один из способов воспроизведения (по крайней мере, на 64-битной Windows 7 Home, работающей от имени администратора и использующей C # с Visual Studio 2010).
Установите программу установки драйверов FTDI EXECUTABLE из здесь (http://www.ftdichip.com/Drivers/D2XX.htm)
Это установит следующие файлы в \ Windows \ System32:
-ftbusui.dll
-ftcserco.dll
-ftd2xx.dll
-FTLang.dll
-ftserui2.dll
Следующий код:
String[] files = Directory.GetFiles(Environment.SystemDirectory, "f*.*", SearchOption.TopDirectoryOnly);
возвращает ftd2xx.dll, но неостальные четыре файла.
Изменение searchPattern на *. * или простое использование:
GetFiles(Environment.SystemDirectory)
возвращает ftd2xx.dll, но не остальные четыре файла.
Ни один из файлов не скрыт, и все пять имеют одинакового владельца и разрешения. Все пять файлов отображаются в проводнике Windows и в окне командной строки.
Фактически, следующее возвращает false:
File.Exists(@"c:\Windows\System32\ftbusui.dll")
и четыре файла не отображаются в диалоге OpenFileDialog. Запуск исполняемого файла с правами администратора не имеет значения, а отключение UAC не помогает.