NTFS Change Journal - 文件更改跟踪

问题描述 投票:1回答:1

我正在开发一个更改跟踪软件来监控特定卷的文件。我尝试过FileSystemWatcher(.NET)和AlternateDataStreams但它们都有一些限制(即变更跟踪软件必须全天候运行,备用数据流不适用于ReadOnly文件等)。

经过一些调查,我认为我可以直接阅读NTFS变更日志。如果在同一卷上移动/重命名文件等,则此方法很有用。为了识别我正在使用文件参考号的文件。

但是,如果将文件移动到另一个卷,则文件引用号自然会更改。

我的问题:即使文件被移动到另一个卷,是否有一个唯一的ID(GUID或其他)不会改变?

filesystems filesystemwatcher ntfs ntfs-mft alternate-data-stream
1个回答
1
投票

嗯...可以有文件GUID,但默认情况下不存在。

如果您具有必要的权限,则可以遍历文件并分配将在NTFS卷移动中保留的GUID。您声明的目标正是该功能存在的原因。它使用了一个名为DeviceIOControl的有点笨拙的API ...它用于无数目的......但其中一个控制代码是FSCTL_CREATE_OR_GET_OBJECT_ID。查看here了解详情。

如果尚未分配GUID,它只会创建GUID ...这就是您希望它工作的方式。当然,如果文件移动到非NTFS卷,你仍然运气不好。

© www.soinside.com 2019 - 2024. All rights reserved.