0

前述のように、私は Visual Studio 2012 を使用する Windows 8 マシンを使用しています。

現在マップされているすべてのドライブのリストを取得するだけでなく、ネットワーク ドライブをマップ/マップ解除する必要があります。マップ/マップ解除するには、PInvoke 経由でそれぞれ WNetAddConnection2A と WNetCancelConnection2A を使用しています。現在マップされているドライブの一覧を取得するために、現在 WMI を使用して Win32_MappedLogicalDisk を照会しています。

        using (var searcher = new ManagementObjectSearcher("SELECT * FROM Win32_MappedLogicalDisk"))
        {
            foreach (ManagementObject queryObj in searcher.Get())
            {
            }
        }

興味深いのは、WMI から返された "マップされた" ドライブが、ファイル エクスプローラーの左側のパネルの "コンピューター" の下に表示されないことです。返された「マップされた」ドライブも、「net use」コマンドを使用しても表示されません。WNetAddConnection2A を介してドライブをマップでき、Win32_MappedLogicalDisk クエリを介して返されますが、ファイル エクスプローラーには表示されません。

さらに、ファイル エクスプローラーを使用してドライブを手動でマップすることもできます。マップされたドライブは "net use" を使用して表示されますが、WMI を使用して Win32_MappedLogicalDisk を照会しても返されません。

ファイル エクスプローラー/「ネット使用」は、WNetAddConnection2A/WMI と同じソースと通信していないようです。この同じコードを Windows 7 で問題なくテストしました。

どんな助けでも大歓迎です。ありがとう

4

1 に答える 1

2

WMI クラスと DriveType プロパティを試してくださいWin32_LogicalDisk(値 4 はネットワーク ドライブを示します)。

Select * From Win32_LogicalDisk Where DriveType = 4
于 2013-05-01T16:28:21.133 に答える