gpt4 book ai didi

windows - 在 NTFS 卷上快速查找一组文件名,最好通过其 MFT

转载 作者:可可西里 更新时间:2023-11-01 13:33:05 30 4
gpt4 key购买 nike

我正在编写一个工具,用于查找 iTunes 库中丢失的文件,适用于 Mac 和 Windows。在 Mac 上,我可以使用神奇的“目录搜索”功能通过命名快速查找文件。

但是,在 Windows 上,似乎没有用于按文件名搜索的操作系统 API(或者有吗?)。

经过一些谷歌搜索后,我了解到有一些工具(如 TFindEverything)可以直接读取 NTFS 目录并扫描它以按名称查找文件。

我也想这样做,但不必从头开始(虽然我过去写过不少磁盘工具,但我一直没有精力去研究 NTFS)。

我想知道是否有现成的库,可能是一个 .dll,这会给我这个搜索功能:传入一个文件名,取回它的路径。

或者,Windows 索引服务怎么样?至少当我在最近安装的 XP Home 系统上尝试此操作时,开始 菜单下的搜索 操作实际上会扫描所有目录,这表明它没有完整的数据库。由于我根本不是 Windows 用户,我想知道为什么这不起作用。

最后,我需要的完整解决方案是:我有一个要查找的文件名列表,我需要搜索整个磁盘(或使用数据库)的代码来获取我一气呵成。例如,搜索不应该对我正在查找的每个文件开始新的全面扫描。这就是为什么我认为 MFT 方式是最佳的,因为它可以快速遍历所有名称,并将每个名称与我的列表进行比较。

最佳答案

解决您的问题的最佳方法似乎是使用 Windows Change Journal。

问题:如果没有为卷启用或卷是非 NTFS,则您需要回退(如果是 NTFS,则启用 Change Journal)。您还需要管理员权限才能访问更改日志。

您可以使用 LowUsn=0 的 FSCTL_ENUM_USN_DATA 和 DeviceIOControll 获取文件。这直接访问 MFT 并将所有文件名写入提供的缓冲区。因为它按顺序访问 MFT,所以它比 FindFirstFile API 更快。

关于windows - 在 NTFS 卷上快速查找一组文件名,最好通过其 MFT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4203573/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com