代码之家  ›  专栏  ›  技术社区  ›  NoizWaves

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

  •  2
  • NoizWaves  · 技术社区  · 17 年前

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

    我感兴趣的挂载是当一个文件夹被挂载到另一个文件夹时。

    2 回复  |  直到 17 年前
        1
  •  2
  •   Community Mohan Dere    9 年前

    我想你是说 NTFS junction ?有一个 unmanaged API 要获得重解析点,您必须 interrogate 看看它是否真的是一个路口。就是这样 available through P/Invoke 当然。

    但是,大多数人只是(1)寻找 ReparsePoint 在列表中 attributes 返回由 DirectoryInfo.GetDirectories .

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

    (2) 哇。硬链接不是重解析点, they're just standard directory entries pointing to the same file 多亏了 Reuben 谢谢你纠正我的错误。

        2
  •  0
  •   lsalamon    17 年前

    通过WMI执行此操作。请参阅以下示例: http://msdn.microsoft.com/en-us/library/aa393244(VS.85).aspx

    或者尝试以下示例代码 WMI Code Creator :

    
    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);
                }
            }
        }
    }