Kevin Brady Ответов: 1

Проверьте подключение ethernet в windows 10


Я использую следующую функцию, чтобы определить, подключена ли машина, на которой работает приложение, к локальной сети через Ethernet. Это прекрасно работает в Windows 7, но не работает в Windows 10. Он не находит соединение Ethernet, даже если машина фактически подключена к локальной сети через Ethernet.

Public Function CheckEthernetLANConnection() As Boolean
    ' check to determine if the ethernet LAN is "up" (i.e. hardwire connection)
    CheckEthernetLANConnection = False
    Dim adapters As System.Net.NetworkInformation.NetworkInterface() = System.Net.NetworkInformation.NetworkInterface.GetAllNetworkInterfaces()
    For i As Short = 0 To adapters.Length - 1 Step 1
        If adapters(i).Name = "Local Area Connection" Then
            If adapters(i).OperationalStatus = Net.NetworkInformation.OperationalStatus.Up Then
                CheckEthernetLANConnection = True
                Exit For
            End If
        End If
    Next i
End Function


Что я уже пробовал:

Я искал в Интернете проблемы, связанные с VB.Net, Windows 10 & the
System.Net.NetworkInformation.NetworkInterface.GetAllNetworkInterfaces
класс. Я ничего не мог найти.

phil.o

Скорее всего, Ethernet-соединения Windows 10 по умолчанию не называются "локальным подключением".
Когда вы отлаживаете этот фрагмент кода, сколько элементов adapters переменное удержание? Как их зовут?

Kevin Brady

У меня нет Windows 10, ПК для разработки, который я использую. Это происходит на клиентском компьютере. Что делает поиск неисправностей еще более трудным. Тем не менее, я попытаюсь вставить какой-нибудь код, чтобы определить, что такое имена адаптеров.

Kevin Brady

Вот список того, что я нашел.
Локальная сеть
Локальное Подключение* 4
Ethernet 2
вай-Фай
Сетевое Соединение Bluetooth
Петлевой Псевдоинтерфейс 1

Так теперь вопрос у меня ключ на "подключение по локальной сети* 4" или "локальные сети" или "Ethernet уровня 2"?

1 Ответов

Рейтинг:
8

Kevin Brady

По-видимому, Microsoft немного изменила соглашения об именовании адаптеров для сетевых адаптеров, когда выпустила W10. Чтобы приспособить W7 & W10, я изменил исходную функцию следующим образом:

Public Function CheckEthernetLANConnection() As Boolean
    ' check to determine if the ethernet LAN is "up" (i.e. hardwire connection)
    CheckEthernetLANConnection = False
    Dim adapters As System.Net.NetworkInformation.NetworkInterface() = System.Net.NetworkInformation.NetworkInterface.GetAllNetworkInterfaces()

    For i As Short = 0 To adapters.Length - 1 Step 1
        Dim aStr As String = adapters(i).Name
        If aStr.Contains("Local Area Conn") = True Then
            If adapters(i).OperationalStatus = Net.NetworkInformation.OperationalStatus.Up Then
                CheckEthernetLANConnection = True
                Exit For
            End If
        End If

        If aStr.Contains("Ether") = True Then
            If adapters(i).OperationalStatus = Net.NetworkInformation.OperationalStatus.Up Then
                CheckEthernetLANConnection = True
                Exit For
            End If
        End If

    Next i

End Function


phil.o

Спасибо, что поделились своим решением. Я немного изменил ваш пост, чтобы добавить тип " vb " в тег pre для лучшей читаемости кода.

Kevin Brady

Спасибо за помощь в том, чтобы подтолкнуть меня к поиску решения.