問題

特定のWireless80211またはイーサネットネットワークインターフェイスのIPv4アドレスを変更するための小さなスクリプトをプログラミングしています。これまでのところすべて正常に動作しています。スクリプトはコマンドプロンプトとnetshでIPv4を設定します(C#で制御するにはSystem.Diagnosticsを使用します)。 スクリプトが「コントロールパネル>ネットワークとネットワーク接続」で見つけられるすべてのWireless80211およびイーサネットネットワークインターフェイス(特定のものなし)を無効または有効にする機能を追加します。

スクリプトは主にArtNetからDMXに使用され、ArtNetを使用するためにすべてを自動的に準備します(コントロールパネルの何も知らず、ワークフローを自動化するために)。 私はすでにSystem.Net.NetworkInformation名前空間で試してみましたが、有効なネットワークインターフェイスを取得する方法しか見つかりませんでした。インターフェイスSystem.Net.NetworkInformationを無効にすると、このインターフェイスは表示されません。

  ベストアンサー

NetworkInterface.GetAllNetworkInterfaces()が無効なインターフェイスを返さなかったことを認識していませんでした。

とにかく、.NETフレームワークで利用可能なSystem.Management.dllを介してWMI APIを使用してみることができます(この参照をプロジェクトに追加する必要があります)。テストを行い、無効なネットワークインターフェイスでも対話できます。

次の例は、このAPIを介してWMIで作業する方法のアイデアを示しています。ドキュメントからかなり抽出しました。

 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

  同じタグがついた質問を見る

c#network-programmingnetwork-interface