vb.net как проверить, постоянно ли подключен сетевой диск
Я использую следующий код для разметки сетевых дисков в системе. Я хочу добавить третий столбец для сохранения, но в vb.net я не знаю, как проверить, есть ли на диске постоянная карта или нет. Какие-либо предложения?
For Each drive_info As DriveInfo In DriveInfo.GetDrives()
If drive_info.DriveType().ToString = "Network" Then
With maps.Items.Add(drive_info.Name)
.SubItems.Add(drive_info.DriveType().ToString)
End With
End If
Next drive_info
2 ответа
Вы могли бы всегда делать это в WMI без каких-либо (ну ладно, меньше) неприятных обломков.
например
Система импорта Система импорта. Управление Публичный модуль modmain Sub Main() Dim искатель как новый ManagementObjectSearcher("SELECT * FROM Win32_NetworkConnection WHERE LocalName = 'Z:'") Dim obj As ManagementObject Для каждого объекта В поисковике. Console.WriteLine("{0} {1}", obj.Item("LocalName").ToString, obj.Item("Persistent")) следующий End Sub Конечный модуль
Очевидно, что вам нужно добавить ссылку на System.Management.dll и изменить Z: на диск, который вы проверяете, или вы можете заменить весь ваш код только этим фрагментом, так как удаление предложения WHERE вернет все подключенные диски.
Это может помочь вам. Это класс C#, который перечисляет сетевые ресурсы и имеет возможность различать постоянные соединения:
http://www.codeproject.com/KB/cs/csenumnetworkresources.aspx?msg=964694
Я прошу прощения, что это в C#, но он делает некоторые вещи, как маршалинг памяти, который я не знаю, как сделать в VB.
Константы передаются в EnumerateServers
Функция для обеспечения точного контроля над выходом. Интересующая вас константа:
RESOURCE_REMEMBERED
Перечисляет запомненные (постоянные) соединения.