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 

Перечисляет запомненные (постоянные) соединения.

Другие вопросы по тегам