代码之家  ›  专栏  ›  技术社区  ›  SKINDER

如何以编程方式区分Windows7中的硬链接和实际文件?

  •  3
  • SKINDER  · 技术社区  · 16 年前

    我有一个文件大小和已用磁盘空间(总文件大小甚至超过磁盘大小)之间的差异。我想是因为Windows7/Vista中存在许多硬链接(到WinSxs组件)。但是,如何通过编程将硬链接与Windows7中的实际文件区分开来呢?

    3 回复  |  直到 15 年前
        1
  •  5
  •   Billy ONeal IS4    16 年前

    不能,因为所有文件都是硬链接。不,真的。文件只是到数据块的硬链接——目录中的列表。(也许你是说符号链接?你 可以 区分那些……)

    使用Windows提供的内置方法来计算已用空间。

    编辑: Reference (强调矿山)

    链接本身只是一个目录项 ,并且没有安全描述符。因此,当您更改硬链接的安全描述符时,您将更改基础文件的安全描述符,并且指向该文件的所有硬链接都允许新指定的访问。

        2
  •  2
  •   dan04    16 年前

    你 不能 区分硬链接和“真实文件”。“真实文件”的目录条目只是另一个硬链接。也许你的意思是象征性的联系。

    POSIX有一个 stat 函数(调用 _stat 在Windows中)可以检测到同一文件的多个链接,这些链接将具有相同的“inode”编号。

        3
  •  1
  •   ribram    15 年前

    使用 GetFileInformationByHandle() 检查返回的 BY_HANDLE_FILE_INFORMATION nnumberOfLinks成员,用于值>1。