检测符号链接,连接点,挂载点和硬链接

有没有人知道如何检查一个文件或目录是符号链接连接点挂载点硬链接

据我所知,通过检查文件的“ReparsePoint”属性来检测符号链接。 通过检查“ReparsePoint”属性的目录来检测连接点。 因此,如果在文件上设置“ReparsePoint”属性,它必须是一个符号链接,否则,如果它设置在一个目录中,它只能是一个连接点…对吗?

到目前为止,但我仍然不知道如何检测“挂载点”和“硬链接”。 谁能告诉我如何做到这一点?

符号链接,连接点和挂接点都是不同重新分析点的示例。 然而,硬链接只是普通的文件。 在NTFS上,所有文件都是硬链接。 你可以检测到一个文件有多个指向它的硬链接,但是没有指向它的“真实文件”。 您可以将硬链接视为同一个文件的不同名称。

以下是有关从C#访问重解析点的一些信息: http : //www.codeproject.com/KB/vista/ReparsePointID.aspx? display=Print

以下是关于如何在C中执行的一些信息: http : //blog.kalmbach-software.de/2008/02/

硬链接:

您可以通过调用Win32 API函数GetFileInformationByHandle来检测多个名称是否指向相同的“数据块”或“文件内容”。 返回的BY_HANDLE_FILE_INFORMATION结构的nNumberOfLinks成员包含链接的总数

登录点:

您可以使用FindFirstVolumeMountPoint和FindNextVolumeMountPoint遍历卷上的所有挂载点。 FindVolumeMountPointClose也应该用来关闭搜索句柄。

从.NET

从.NET这样做将需要一些P / Invoke魔术

请看我的问题NTFS连接,麻烦了解API 。 这是一个问题的重复。 但是我用C / C ++解释所有关于如何实现重新分析点,挂载点,连接点和符号链接。 不要只是提供API的链接,盲目地…