NTFS更改日志-文件更改跟踪

时间:2018-08-15 17:11:15

标签: filesystems filesystemwatcher ntfs ntfs-mft alternate-data-stream

我正在开发一个更改跟踪软件,以监视特定卷的文件。我尝试了FileSystemWatcher(.NET)和AlternateDataStreams,但是它们都有一些局限性(例如,更改跟踪软件必须是24/7格式,备用数据流不能用于ReadOnly文件等)。

经过一些调查,我认为我可以直接阅读NTFS更改日志。如果在同一卷上移动/重命名文件等,这将非常有用。为了识别文件,我使用了文件参考号。

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

我的问题: 是否存在即使文件移动到另一个卷也不会更改的唯一ID(GUID或其他名称)?

1 个答案:

答案 0 :(得分:1)

好吧... 可以是文件GUID,但默认情况下不存在。

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

仅当尚未分配GUID时才创建GUID ...这就是您希望其工作的方式。当然,如果文件移动到非NTFS卷,则您仍然不走运。