如何以编程方式将硬链路与Windows 7中的真实文件区分开?
题
我在文件大小和使用的磁盘空间之间有区别(总文件大小甚至超过磁盘大小)。我想是因为Windows 7/Vista中存在许多硬链接(与WinSXS组件)。但是,如何以编程方式将硬链路与Windows 7中的真实文件区分开?
解决方案
您不能,因为所有文件都是困难的链接。不完全是。文件只是数据块的硬链接 - 目录中的列表。 (也许你是说symlinks? 能够 区分那些...)
使用Windows提供的内置方法用于计算二手空间。
编辑: 参考 (强调我的)
链接本身只是目录条目, ,并且没有安全描述符。因此,当您更改硬链接的安全性描述符时,您将更改基础文件的安全描述符,并且所有指向文件的硬链路都允许新指定的访问。
其他提示
你 不能 将硬链接与“真实文件”区分开。 “真实文件”的目录条目只是另一个硬链接。也许您的意思是符号链接。
Posix有一个 stat
函数(调用 _stat
在Windows)中可以检测到与同一文件的多个链接,该链接将具有相同的“ Inode”号码。
采用 getFileInformationByHandle() 并检查返回的 by_handle_file_information nnumberoflinks成员的值> 1。
不隶属于 StackOverflow