窗口中唯一的文件标识符

窗口中唯一的文件标识符

是否有办法唯一标识文件(可能是目录)的文件的生命周期,无论移动,重命名和内容修改? (Windows 2000及更高版本)。 制作一个文件的副本应该是副本,它是自己的唯一标识符。

我的应用程序将各种元数据与各个文件相关联。 如果文件被修改,重命名或移动,则能够自动检测和更新文件关联将是有用的。

FileSystemWatcher可以提供通知这些变化的事件,但是如果许多文件系统事件发生迅速,它将使用可以轻松填充的内存缓冲区(以及事件丢失)。

散列是没有用的,因为文件的内容可以改变,所以散列会改变。

我曾经想过使用文件创建日期,但是有一些情况不是唯一的(即复制多个文件时)。

我还听说过NTFS中的一个文件SID(安全ID?),但是我不知道这是否会做我正在寻找的内容。

有任何想法吗?

采纳答案:

如果您调用GetFileInformationByHandle ,您将在BY_HANDLE_FILE_INFORMATION.nFileIndexHigh / Low中获取一个文件ID。 该索引在卷内是唯一的,即使您移动文件(在卷内)或重命名文件,它也保持不变。

如果您可以假设使用NTFS,您可能还需要考虑使用备用数据流来存储元数据。

参考更多解答:窗口中唯一的文件标识符,转载请保留窗口中唯一的文件标识符

更多:c#