Если у вас есть Windows Desktop Search или Windows Search , работающий (или целевой компьютер может иметь его в любом случае), вы можете использовать ISearchFolderItemFactory (или ISearchDesktop
для WDS), чтобы он выполнял поиск для вас.
Если не существует ранее существовавшего индекса, практически единственный способ сделать это с помощью FirstFirstFile
, FindnextFile
и FindClose
. Обычно я рекомендую против очевидного рекурсивного метода поиска - поиск в ширину обычно, по крайней мере, так же быстр, и в зависимости от ситуации, может легко быть в два раза быстрее.
Чтобы выполнить поиск в ширину, вы поддерживаете коллекцию (я обычно использую очередь с приоритетами, но нормальная очередь, стек и т. Д., Также будут работать) подкаталогов, которые вы еще не искали. Вы начинаете поиск, вводя начальный каталог в коллекцию, а затем выполняете свою функцию поиска. Ваш поиск выполняется в цикле, продолжая поиск, пока коллекция не станет пустой. Когда он встречает каталог, он добавляет его в коллекцию.