3

我在文件大小和已用磁盘空间之间存在差异(总文件大小甚至大于磁盘大小)。我想是因为在 Windows 7/Vista 中存在许多硬链接(到 WinSxS 组件)。但是如何以编程方式将硬链接与 Windows 7 中的真实文件区分开来?

4

3 回答 3

5

你不能,因为所有文件都是硬链接。不完全是。文件只是指向数据块的硬链接——目录中的列表。(也许你的意思是符号链接?你可以区分那些......)

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

编辑:参考(强调我的)

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

于 2010-09-03T14:48:07.387 回答
2

使用GetFileInformationByHandle()并检查返回的BY_HANDLE_FILE_INFORMATION nNumberOfLinks成员的值是否大于 1。

于 2011-06-02T21:58:06.100 回答
2

无法将硬链接与“真实文件”区分开来。“真实文件”的目录条目只是另一个硬链接。也许你的意思是一个符号链接。

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

于 2010-09-03T14:53:55.373 回答