皆さん、
何年もの間、私は以下のC#IsNetworkDriveメソッドを使用して、「これはネットワークドライブですか?」を判断してきました。WindowsXPで。Windows 7でも期待どおりの結果が得られますが、呼び出しごとに10秒程度の時間がかかります...約100万倍の長さです。
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;
}
}
}
Arrrgggghhhh。私はウィンドウズが嫌いです!
Windows7とWindowsXP(企業のSOE)の両方で、特定のドライブ文字がローカルドライブを表すのかネットワークドライブを表すのかを[パフォーマンス的に]判断する方法を知っている人はいますか????
[できれば.NET<=3.5で、プロジェクトを4.0にアップグレードすることはできますが、必要なのはグリーンフィールドテストだけで、現時点では資金がありません。はぁ。]
みんな乾杯。キース。