如何在C#中检测NTFS装载的文件夹?

如何在C#中检测NTFS装载的文件夹?,c#,directory,ntfs,mount,C#,Directory,Ntfs,Mount,曾经,我读到过如何通过编程检测已装入的NTFS文件夹(在搜索文件夹时可能导致循环递归)。现在我找不到链接。。有人知道怎么做吗 我感兴趣的挂载是当一个文件夹挂载到另一个文件夹时进行检测。我想你是指?有一种方法可以获取重分析点,然后您必须查看它是否实际上是一个连接点。当然,这就是全部 但是,大多数人只是(1)在返回的列表中查找 (1) 请注意,NTFS连接是一种特殊类型的重分析点,但不是唯一的重分析点。符号链接、硬链接(2)和任何其他用户定义的数据也是重分析点 (2) 哎呀。硬链接不是重分析点。感谢

曾经,我读到过如何通过编程检测已装入的NTFS文件夹(在搜索文件夹时可能导致循环递归)。现在我找不到链接。。有人知道怎么做吗

我感兴趣的挂载是当一个文件夹挂载到另一个文件夹时进行检测。

我想你是指?有一种方法可以获取重分析点,然后您必须查看它是否实际上是一个连接点。当然,这就是全部

但是,大多数人只是(1)在返回的列表中查找

(1) 请注意,NTFS连接是一种特殊类型的重分析点,但不是唯一的重分析点。符号链接、硬链接(2)和任何其他用户定义的数据也是重分析点


(2) 哎呀。硬链接不是重分析点。感谢您纠正我的错误。

通过WMI执行此操作。见以下示例:

或者尝试使用以下代码制作的示例:


正如Mark所提示的,在递归目录枚举期间,“跳过”所有重分析点可能是个坏主意。根据您的上下文,谨慎地排除符号链接和连接可能是一个明智的想法。另外,对马克的评论做了一个小的修正——硬链接不是作为重分析点实现的。@Reuben-你是对的,硬链接不是重分析点。编辑,谢谢你的更正。

using System;
using System.Management;
using System.Windows.Forms;

namespace WMISample
{
    public class MyWMIQuery
    {
        public static void Main()
        {
            try
            {
                ManagementObjectSearcher searcher = 
                    new ManagementObjectSearcher("root\\CIMV2", 
                    "SELECT * FROM Win32_DiskPartition"); 

                foreach (ManagementObject queryObj in searcher.Get())
                {
                    Console.WriteLine("-----------------------------------");
                    Console.WriteLine("Win32_DiskPartition instance");
                    Console.WriteLine("-----------------------------------");
                    Console.WriteLine("Type: {0}", queryObj["Type"]);
                }
            }
            catch (ManagementException e)
            {
                MessageBox.Show("An error occurred while querying for WMI data: " + e.Message);
            }
        }
    }
}