DSOFile.OleDocumentProperties.Save 是否修改文件?

Nic*_*oul 1 ole dsofile

DSOFile.OleDocumentProperties.Save 修改与 NTFS 上的文件关联的元数据。

它是否修改了文件本身,意味着校验和会改变?
或者它是否只修改了一些关于文件的 NTFS 元数据,但校验和将保持不变?

更多关于 DSOFile: KB , Technet

Credit: 这实际上是 Ilmo 在这个问题中的自我质问

Jay*_*Jay 5

这取决于文件格式和文件所在的文件系统。

如果文件是 OLE 格式,则文件本身将被修改,因为属性包含在文件中。这将导致文件数据被修改,其大小可能会发生变化。任何文件哈希生成器(例如 CRC、MD5、SHA1 等)都会产生不同的结果,在更改其中一个属性之前和之后。

如果文件不是 OLE 格式,则所有属性都将保存在一个或多个 NTFS 文件流中,这些文件流与文件数据在物理上是分开的。这将导致文件上次修改时间的更改,但不会导致文件数据被修改或大小更改。假设程序不考虑文件的最后修改时间及其文件流,文件哈希生成器将在更改属性之一之前和之后产生相同的结果。在非 NTFS 文件系统的情况下,OLE 文档属性不适用于所有文件。