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

Ale*_*der 11 .net c# windows filesystems reparsepoint

有谁知道如何检查文件或目录是符号链接,连接点,挂载点还是硬链接

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

好到目前为止,但我仍然不知道如何检测"挂载点"和"硬链接".谁能告诉我怎么做?

Gab*_*abe 10

符号链接,连接点和挂载点都是不同重新分析点的示例.但是,硬链接只是常规文件.在NTFS上,所有文件都是硬链接.您可以检测到文件有多个指向它的硬链接,但它没有指向的"真实文件".您可以将硬链接视为同一文件的不同名称.

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

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

  • 他们两个都是硬链接. (6认同)

Han*_*ger 5

硬链接:

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

装载点数:

您可以使用FindFirstVolumeMountPointFindNextVolumeMountPoint遍历卷上的所有装入点.此外FindVolumeMountPointClose应该用来关闭搜索句柄.

来自.NET

从.NET执行此操作需要一些P/Invoke魔法