Быстрый поиск набора имен файлов на томах NTFS, в идеале через его MFT

Я сейчас пишу инструмент, который находит потерянные файлы библиотеки iTunes как для Mac, так и для Windows. На Mac я могу быстро найти файлы, присвоив им имена с помощью замечательной функции «CatalogSearch».

В Windows, однако, похоже, нет OS API для поиска по имени файла (или есть?).

После немного погуглил, я узнал, что есть инструменты (например, TFind , Все ), которые читают каталог NTFS напрямую и сканируют его, чтобы найти файлы по имени.

Я хотел бы сделать то же самое, но без необходимости начинать с нуля (хотя я написал довольно много дисковые инструменты в прошлом, у меня никогда не было сил копаться в NTFS).

Интересно, есть ли готовые библиотеки, возможно, в виде .dll, которые дали бы мне эту функцию поиска: передать имя файла, верните его путь.

Как насчет службы индексирования Windows? По крайней мере, когда я пробовал это на недавно установленной системе XP Home, операция Search в меню Start фактически сканировала все каталоги, что предполагает отсутствие полной базы данных. Поскольку я вообще не являюсь пользователем Windows, мне интересно, почему это не работает.

В конце концов, полное решение , которое мне нужно: у меня есть список имен файлов, которые нужно найти, и мне нужен код, который просматривает весь диск (или использует для него базу данных), чтобы получить все результаты за один раз. Например, поиск не должен запускать новое полное сканирование для каждого файла, который я ищу. Вот почему я думаю, что способ MFT был бы оптимальным, поскольку он мог бы быстро перебирать все имена, сравнивая каждое с моим списком.

5
задан Roman R. 19 September 2012 в 16:07
поделиться