曾几何时,我读过您如何以编程方式检测已挂载的 NTFS 文件夹(在搜索文件夹时会导致循环递归)。现在我找不到链接..有谁知道该怎么做?
我有兴趣检测的安装是一个文件夹安装到另一个文件夹时。
我假设您的意思是NTFS 连接?有一个非托管 API可以获取重解析点,然后您必须查询它以查看它是否实际上是一个联结点。当然,这一切都可以通过 P/Invoke获得。
但是,大多数人只是(1)在DirectoryInfo.GetDirectories返回的属性列表中查找ReparsePoint。
(1) 注意 NTFS Junction 是一种特殊类型的重解析点,但不是唯一的。符号链接、硬链接、 (2) 和任何其他用户定义的数据也是重解析点。
(2) 哎呀。硬链接不是重解析点,它们只是指向同一个文件的标准目录条目。感谢鲁本纠正我的问题。
通过 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);
}
}
}
}