Получите подключенные сетевые диски в Windows 8
Как уже отмечалось, я работаю на Windows 8 и использую Visual Studio 2012.
Мне нужно подключить / отключить сетевые диски, а также получить список всех подключенных в данный момент дисков. Для отображения / отмены отображения я использую WNetAddConnection2A и WNetCancelConnection2A, соответственно, через PInvoke. Чтобы получить список подключенных в данный момент дисков, я сейчас использую 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.
File Explorer / "net use", кажется, не использует те же источники, что и WNetAddConnection2A / WMI. Я протестировал этот же код на Windows 7 без каких-либо проблем.
Любая помощь приветствуется. Спасибо
1 ответ
Попробуйте Win32_LogicalDisk
Класс WMI и свойство DriveType (значение 4 указывает сетевой диск).
Select * From Win32_LogicalDisk Where DriveType = 4