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

时间:2009-01-30 00:04:47

标签: c# directory ntfs mount

曾几何时,我会阅读您如何以编程方式检测已安装的NTFS文件夹(在搜索文件夹时可能导致循环递归)。现在我找不到链接..有谁知道怎么做?

我感兴趣的安装是将一个文件夹安装到另一个文件夹。

2 个答案:

答案 0 :(得分:2)

我认为你的意思是NTFS junction?有unmanaged API来获取重新分析点,然后您必须interrogate查看它是否实际上是一个结。当然,这都是available through P/Invoke

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

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

(2)哎呀。硬链接不是重新分析点they're just standard directory entries pointing to the same file。感谢Reuben纠正了我。

答案 1 :(得分:0)

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