伙计们,
多年来,我一直很高兴地使用下面的 C# IsNetworkDrive方法来确定“这是网络驱动器吗?” 在 Windows XP 下。它仍然会在 Windows 7 下产生预期的结果,但每次调用需要大约 10 秒的时间......所以大约一百万倍太长了!
using System;
using System.Collections.Generic;
using System.Management;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
foreach (var driveName in Environment.GetLogicalDrives())
Console.WriteLine(driveName + " " + IsNetworkDrive(driveName.Substring(0,2)));
Console.Write("Press any key to continue ...");
Console.ReadKey();
}
private static bool IsNetworkDrive(string drive)
{
var query = @"SELECT Name FROM win32_NetworkConnection WHERE LocalName='" + drive + "'";
var seacher = new ManagementObjectSearcher(query);
var resultset = seacher.Get();
var count = resultset.Count;
return count == 1;
}
}
}
啊啊啊啊。我讨厌Windows!
请问有人知道如何 [performantly] 确定给定的驱动器号是在 Windows 7 和 Windows XP(企业 SOE)上代表本地驱动器还是网络驱动器????
[最好在 .NET <= 3.5 中,虽然我可以将项目升级到 4.0,但它只需要一个绿地测试,我们现在没有钱。叹。]
祝大家欢呼。基思。