Я не уверен, что именно вы ищете ... но если я получу, куда вы идете, с "взломом" Directory.GetFiles (), который вы упомянули, то что-то вроде этого может работать:
var Dirs = Directory.GetDirectories(@"C:\Windows", "sys*",
SearchOption.TopDirectoryOnly).ToList();
var Files = new List<String>();
Dirs.ForEach(dirName => Files.AddRange(Directory.GetFiles(dirName, "*.sys", SearchOption.AllDirectories)));
Параметр подстановки при вызове GetDirectories позволит вам получить все каталоги, содержащиеся в папке Windows [непосредственно], которые соответствуют шаблону "sys *".
Затем вы можете перебирать те папки, собирая все файлы, которые соответствуют шаблону "* .sys".
Это то, что вы ищете? Чтобы автоматически развернуть аргументы, вам нужно будет извлечь какие-то осмысленные символы и применить их к этой модели ...
Например:
RunMyApp "C: \ Windows \ Sys * \ * .sys"
Вы бы вытащили строку C: \ Windows - возможно, с помощью регулярного выражения, нашли бы каталог самого низкого уровня, не содержащий подстановочный знак, и применили бы его к методу GetDirectories, добавив строку с подстановочными символами в качестве параметра поиска.
Тогда если ваш конец строки (в данном случае * .sys) в качестве шаблона поиска для Directory.GetFiles.
Если вы хотите все усложнить и сделать что-то вроде:
C:\Windows\*\Sys*\*.sys
Вы должны использовать SearchOptions, чтобы установить это поведение:
Directory.GetDirectories(@"C:\Windows", "sys*", SearchOptions.AllDirectories)
При этом будут извлечены все каталоги, которые соответствуют шаблону sys * в каталоге Windows, и все каталоги под ним.
Если вы хотите сделать все намного сложнее, то я не уверен, как бы вы это сделали ... например, скажем, вы хотели, чтобы папки, содержащиеся в папках непосредственно внутри каталога Windows, - я понятия не имею, как бы вы поступили примерно так, я боюсь ... я не представляю, что экспорт всей древовидной структуры в XML и использование XPath для этого было бы настолько эффективно - XPath было бы невероятно просто для анализа с использованием подстановочных знаков - но преобразование в XML не было бы таким эффективным ...