Вы должны использовать Directory.GetFiles (path, searchPattern, SearchOption) перегрузку Directory.GetFiles ().
Путь указывает путь, searchPattern указывает символы подстановки (например, *, * .format), а SearchOption предоставляет возможность включить подкаталоги.
Свойство Length возвращаемого массива этого поиска предоставит правильное количество файлов для вашего конкретного шаблона поиска и параметр:
string[] files = directory.GetFiles(@"c:\windows\system32", "*.dll", SearchOption.AllDirectories);
return files.Length;
РЕДАКТИРОВАТЬ: В качестве альтернативы вы можете использовать Directory.EnumerateFiles метод
return Directory.EnumerateFiles(@"c:\windows\system32", "*.dll", SearchOption.AllDirectories).Count();