1

Win32_NetworkAdapterConfigurationC#のクラスからすべての networkadapterconfigurations を収集しています。私はこのクエリを使用します:

private String strDetailedInterfaces =
                       @"SELECT * 
                       FROM   Win32_NetworkAdapterConfiguration
                       WHERE  DHCPEnabled = 'TRUE'";

ただし、インターネットへの接続に使用する networkadapter を選択するとIPEnabled = false、 で配列を呼び出すと、IPAddressesnullpointerexception が発生します (配列 = null を意味します)。

私は次のようにアドレスを呼び出します。

ManagementObject choosen = (ManagementObject)eInterfacesConfig.Current;
String[] ipAddresses = (String[]) choosen["IPAddress"];
lblIP.Text = ipAddresses[0];

eInterfacesConfigは でありManagementObjectCollection.Enumerator、choosen はManagementObject列挙子からの電流です。

ラベル (lblIP) のテキストを配列の最初の IP アドレスに変更しようとしています。しかし、これは例外がスローされる場所です。

誰かが理由を説明し、おそらく私を正しい方向に向けることができますか?

4

1 に答える 1

1

次のクエリはWin32_NetworkAdapterConfiguration、Windows8マシンで2つのオブジェクトを返します。

ManagementObjectSearcher query = 
    new ManagementObjectSearcher("SELECT * FROM Win32_NetworkAdapterConfiguration  WHERE DHCPEnabled ='TRUE'");

ManagementObjectCollection queryCollection = query.Get();
queryCollection = query.Get();

foreach (ManagementObject currentConfig in queryCollection)
{
  string[] addresses = (string[])currentConfig["IPAddress"];

  Console.Out.WriteLine(currentConfig["Description"]);
  if (addresses != null)
  {
    foreach (var addr in addresses)
    {
      Console.Out.WriteLine(addr);
    }
  }
}

最初のアダプター構成は、Microsoftカーネルデバッグネットワークアダプター用です。このアダプタは、リモートカーネルのデバッグに使用されます。DHCPEnabledこのアダプタのプロパティはですTRUE。ただし、このアダプタにはIPアドレスが割り当てられていません。IPAddressこれが、配列がnullである理由です。

2番目のアダプター構成は、私のIntelギガビットネットワークアダプター用です。アダプタには2つのIPアドレスが割り当てられています。

アレイがnullになる可能性がある別の理由IPAddressは、たとえば、切断されたワイヤレスネットワークアダプタです。

したがって、問題を解決するには、配列のnullNullReferenceExceptionを確認する必要があり IPAddressます(上記のコードを参照してください)。プロパティを使用しDescription て、アダプタ構成を識別します。

于 2013-03-04T19:34:20.753 に答える