Я сейчас пишу инструмент, который находит потерянные файлы библиотеки iTunes как для Mac, так и для Windows. На Mac я могу быстро находить файлы, называя их с помощью замечательной функции «Поиск по каталогам».
Однако в Windows, похоже, нет OS API для поиска по имени файла (или есть?).
После некоторого поиска в Google я узнал, что существуют инструменты (такие как TFind, Everything), которые напрямую читают каталог NTFS и сканируют его, чтобы найти файлы по имени.
Я хотел бы сделать то же самое, но без необходимости начинать с нуля (хотя в прошлом я написал довольно много дисковых инструментов, у меня никогда не было сил копаться в NTFS).
Интересно, есть ли готовые библиотеки, возможно, в виде .dll, которые дадут мне эту функцию поиска: передать имя файла, вернуть его путь.
А как насчет службы индексирования Windows? По крайней мере, когда я пробовал это на недавно установленной системе XP Home, операция Поиск в меню Пуск фактически сканировала все каталоги, что говорит о том, что у нее нет полной базы данных. Поскольку я вообще не являюсь пользователем Windows, мне интересно, почему это не работает.
В конце концов, мне нужно полное решение: у меня есть список имен файлов, которые нужно найти, и мне нужен код, который выполняет поиск по всему диску (или использует для него БД), чтобы получить все результаты на одном дыхании. Например, поиск не должен запускать новое полное сканирование для каждого файла, который я ищу. Вот почему я думаю, что способ MFT был бы оптимальным, поскольку он мог бы быстро перебирать все имена, сравнивая каждое с моим списком.