C#でネットワークアダプターごとにIPアドレスを設定するソフトを作成しています。
最初に現在の設定状況を取得しているのですが、IPアドレスに関しては、自動か手動かは識別するためのプロパティがあり、わかります。
ところが、DNSサーバーの認識については、自動取得か手動設定かについてはないように思われます。
この区別はどうやって行えばいいのでしょうか?
現状はDNSサーバーのIPアドレスを取得してみて何も取得できなければ自動取得、取得できれば手動設定と判定していますが、Wi-FiアダプターではどちらのばあいもIPアドレスが取得できるため、結果、手動取得と判定されてしまいます。
以下の現状のコードを記載します。
NetworkInterface[] nis = NetworkInterface.GetAllNetworkInterfaces();
foreach (NetworkInterface ni in nis) // アダプターごとに判定
{
~
if (ni.GetIPProperties().GetIPv4Properties().IsDhcpEnabled)
{
~DHCP自動取得の場合の処理~
}
else
{
//IPアドレス固定割付
foreach (UnicastIPAddressInformation ip3 in ipips.UnicastAddresses)
{
if (ip3.Address.ToString().IndexOf("%") > 0) continue;
string[] stAdrs = ip3.Address.ToString().Split('.'); if(stAdrs.Length == 4) { ~IPアドレスを画面に表示~ } string[] stMask = ip3.IPv4Mask.ToString().Split('.'); if (stMask.Length == 4) { ~サブネットマスクを画面に表示~ } //break; } //ゲートウェイ foreach (GatewayIPAddressInformation ip in ipips.GatewayAddresses) { if (ip.Address.ToString().IndexOf("%") > 0) continue; string[] stAdrs = ip.Address.ToString().Split('.'); if (stAdrs.Length == 4) { ~ゲートウェイを画面に表示~ } break; } // Gateway取り出し string stGateWay = string.Empty; foreach (GatewayIPAddressInformation ip in ipips.GatewayAddresses) { if (ip.Address.ToString().IndexOf("%") > 0) continue; stGateWay = ip.Address.ToString() + " "; break; }
}
// DNSサーバー
int nDNSSvr = 0;
foreach (IPAddress ip in ipips.DnsAddresses)
{
if (ip.ToString().IndexOf("%") > 0) continue;
string[] stAdrs = ip.ToString().Split('.'); if (stAdrs.Length == 4) { if (nDNSSvr == 0) { ~最初のDNSサーバーを画面に表示~ nDNSSvr++; } else if (nDNSSvr == 1) { ~次のDNSサーバーを画面に表示~ break; } }
}

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2020/04/28 05:42
2020/04/28 05:48
退会済みユーザー
2020/05/12 23:38