Есть ли способ получить список отключенных / включенных сетевых интерфейсов в C # - PullRequest
0 голосов
/ 01 февраля 2019

Я программирую небольшой скрипт для изменения IPv4-адреса определенного беспроводного интерфейса Wireless80211 или Ethernet.Пока все работает нормально.Скрипт устанавливает IPv4 с помощью командной строки и netsh (для управления им с помощью C # я использую System.Diagnostics).Я хочу добавить функцию, состоящую в том, что скрипт отключает или включает все сетевые интерфейсы Wireless80211 и Ethernet (без конкретного), которые вы можете найти в «Панели управления> Сеть и Интернет> Сетевые подключения».

Сценарийв основном используется для ArtNet для DMX, чтобы автоматически подготовить все для использования ArtNet (для людей, которые ничего не знают о Панели управления и для автоматизации рабочего процесса).Я уже пробовал это с пространством имен System.Net.NetworkInformation, но я только нашел способ получить включенные сетевые интерфейсы.Как только я отключаю интерфейс, System.Net.NetworkInformation не показывает этот интерфейс.

Ответы [ 2 ]

0 голосов
/ 02 февраля 2019

Я не знал, что NetworkInterface.GetAllNetworkInterfaces () не возвращал отключенные интерфейсы.

В любом случае, вы можете попробовать использовать API WMI через System.Management.dll, который доступен в .NET Framework (вы должныдобавьте эту ссылку в ваш проект), я сделал тест, и он позволяет вам взаимодействовать даже с отключенными сетевыми интерфейсами.

Следующий пример дает вам представление о том, как работать с WMI через этот API, я в значительной степениизвлек это из документации:

using System;
using System.Management;
...
void ListNetworkAdapters()
{
    var query = new ObjectQuery("SELECT * FROM Win32_NetworkAdapter");

    using (var searcher = new ManagementObjectSearcher(query))
    {
        var queryCollection = searcher.Get();

        foreach (var m in queryCollection)
        {
            Console.WriteLine("ServiceName : {0}", m["Name"]);
            Console.WriteLine("MACAddress : {0}", m["Description"]);
            Console.WriteLine();
        }

        Console.ReadLine();
    }
}

С документацией можно ознакомиться здесь: https://docs.microsoft.com/en-us/windows/desktop/cimwin32prov/win32-networkadapter

0 голосов
/ 01 февраля 2019

NetworkInterface.GetAllNetworkInterfaces ()

Затем проверьте свойство OperationalStatus

https://docs.microsoft.com/en-us/dotnet/api/system.net.networkinformation.networkinterface?view=netframework-4.7.2

...