Неожиданное поведение при поиске доступных каналов

Мы используем подход GetFiles из этого вопроса следующим образом:

var pipePrefix = "Test_";
Directory.GetFiles("\\.\pipe\", pipePrefix + "*");

И ищем пайпы типа «Тест_1», «Тест_2», «Тест_3». Мы знаем, что у этого подхода есть некоторые проблемы, но мы не смогли найти объяснение нашему поведению.

На данный момент мы протестировали три машины с Windows 10 и одну с Windows 7. В Windows 10 все работает, как и ожидалось (насколько мы можем судить). Мы находим все трубы каждый раз. На машине с Windows 7 у нас есть некоторые проблемы:

С приведенным выше кодом мы вообще не находим никаких каналов. Но если мы будем искать по

Directory.GetFiles("\\.\pipe\", "*");

мы находим все трубы, но затем у нас есть еще один шаг, чтобы выбрать наши трубы. И мы попробовали еще несколько запросов:

Directory.GetFiles("\\.\pipe\", "*");           //We find our pipes
Directory.GetFiles("\\.\pipe\", "T" + "*");     //We find our pipes
Directory.GetFiles("\\.\pipe\", "Te" + "*");    //We don't find our pipes
Directory.GetFiles("\\.\pipe\", "Tes" + "*");   //We don't find our pipes
Directory.GetFiles("\\.\pipe\", "Test" + "*");  //We don't find our pipes
Directory.GetFiles("\\.\pipe\", "Test_" + "*"); //We don't find our pipes

Мы не находим никаких скрытых символов, и никаких исключений не выдается.

Пока мы не знаем, является ли проблема Windows 7.

Обновление 07.11.19: Мы настроили новый компьютер с Windows 7 и новый компьютер с Windows 10 и попробовали несколько букв, а не только T. В Windows 7 мы иногда находим каналы с одной буквой, например. T или U, а иногда и с двумя, например. Те или Уг. Но мы всегда находим каналы в Windows 10. Мы не устанавливали наше программное обеспечение на эти машины, мы просто искали существующие каналы с помощью консольного приложения. Так что с нашей точки зрения это выглядит так, как будто это проблема в Windows 7, а не в нашем приложении.

Поэтому мой вопрос не в том, как мы можем обойти эту проблему. Я уверен, что мы могли бы использовать другой шаблон и фильтровать впоследствии или использовать совершенно другой подход, который не основан на GetFiles/EnumerateFiles (думаю, это лучший вариант). Мой вопрос:

Почему поведение отличается в зависимости от ввода и, возможно, также от ОС?


person 0lli.rocks    schedule 05.11.2019    source источник
comment
Из Win7: можете ли вы добавить список каналов, возвращаемых Directory.GetFiles(\\.\pipe\, T + *).? (все трубы, начинающиеся с T).   -  person EylM    schedule 05.11.2019
comment
@EylM Дело не в букве, мы пробовали несколько букв, не только Т, это всегда одно и то же.   -  person 0lli.rocks    schedule 07.11.2019