【问题标题】:Windows file attributes / version of fileWindows 文件属性/文件版本
【发布时间】:2010-08-26 23:59:20
【问题描述】:

我知道对于 dll 文件,您可以读取程序集版本,但我想知道是否有某种方法可以标记或读取任何文件类型(例如 jpg)的版本。我正在制作一个更新程序,它只更新必要的内容,如果所有文件都被版本化而不是在单独的文件中跟踪版本会更好。

哦,这是为 winXP 设计的,但如果我有一个 win7/windup 解决方案,那就太棒了。

【问题讨论】:

    标签: windows windows-7 windows-xp attributes version


    【解决方案1】:

    程序集的版本是特定于程序集文件格式的。一般的“文件”(例如 JPEG 文件)只是一个比特包,Windows 文件系统没有与此类文件关联的任何“版本”元数据。

    解决问题的一种方法可能是在文件内容上计算哈希(例如使用 SHA1)。如果您有两个文件并且 SHA1 哈希匹配,那么您可以非常确定完整的内容也匹配。 (对于嵌入式文件版本,您无法确定。)

    【讨论】:

    • 在分发这些文件之前,有没有办法将自定义元数据属性附加到这些文件?然后让我的更新程序读取那个元数据附件?
    • 一些文件格式被设计成可以注入任意数据(例如 .gif) 这通常是通过隐写科学完成的(参见garykessler.net/library/steganography.html) .但是,这仅适用于极少数文件,没有通用的方法来实现这一点。您最好维护自己的数据库,通过不匹配的哈希检测文件更改
    • @myermian:不,不是以便携和健壮的方式。对于 Windows,我能想到的唯一方法是使用 NTFS 备用文件流,但是在复制文件时不能可靠地复制此类流,甚至在 FAT 等文件系统上也不支持。此外,如果有人更改了文件内容而不更改元数据,您会怎么做?
    • 我猜它就是这样...... SHA1 应该可以完成这项工作,而不必担心错误的冲突。这是可能的,但从天文角度来看是不可能的,尤其是因为它必须在同一个文件名上发生冲突。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-22
    • 2011-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-22
    相关资源
    最近更新 更多