2

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

我有兴趣检测的安装是一个文件夹安装到另一个文件夹时。

4

2 回答 2

2

我假设您的意思是NTFS 连接?有一个非托管 API可以获取重解析点,然后您必须查询它以查看它是否实际上是一个联结点。当然,这一切都可以通过 P/Invoke获得。

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

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

(2) 哎呀。硬链接不是重解析点,它们只是指向同一个文件的标准目录条目。感谢鲁本纠正我的问题。

于 2009-01-30T01:41:06.103 回答
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);
            }
        }
    }
}
于 2009-01-30T18:30:19.593 回答