2

皆さん、

何年もの間、私は以下の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にアップグレードすることはできますが、必要なのはグリーンフィールドテストだけで、現時点では資金がありません。はぁ。]

みんな乾杯。キース。

4

1 に答える 1

1

私は自分の質問に答えています。

もう少しグーグルで検索すると、この投稿にたどり着きました:システムとそのサーバー名でマップされたネットワークドライブをプログラムで検出する方法は?

そして、その質問のコードは、次のように私を導きます: DriveInfo.GetDrives()これは、私のメインメソッドに取り組んでいます:

    static void Main(string[] args) {
        foreach (var driveInfo in DriveInfo.GetDrives())
            Console.WriteLine(driveInfo + " " + driveInfo.DriveType);
        Console.Write("Press any key to continue ...");
        Console.ReadKey();
    }

生産する:

C:\ Fixed
D:\ CDRom
E:\ Removable
G:\ Network
H:\ Network
I:\ Network
K:\ Network
L:\ Network
M:\ Network
Q:\ Network
Press any key to continue ...

...そして、そこからそう遠くないところにあります:

    // Example drives: "C:" or "L:" ... just the drive-letter and a colon. No backslash. 
    private static bool IsNetworkDrive(string drive) {
        return new DriveInfo(drive).DriveType == DriveType.Network;
    }

非管理者として実行している Windows 7 では、予想される [1 秒未満] の時間枠で予想される結果が得られます。

これが他の誰かを助けることを願っています。

乾杯。キース。

于 2012-05-14T01:09:50.233 に答える