IPタイプを決定するためにC#ポーリング複数のデバイス:静的またはDHCP
-
23-09-2019 - |
質問
でしょう実際にIPタイプを取得するために、C#のコードを知りたい:私は入るだろうデバイスのリストに基づいて静的またはDHCP
。出力表示されるます:
Device name: IP Address: MAC Address: Type: Marvell Yukon 88E8001/8003/8010 PCI Gigabit Ethernet Controller NULL 00:00:F3:44:C6:00 DHCP Generic Marvell Yukon 88E8056 based Ethernet Controller 192.168.1.102 00:00:F3:44:D0:00 DHCP
ManagementClass objMC = new ManagementClass("Win32_NetworkAdapterConfiguration");
ManagementObjectCollection objMOC = objMC.GetInstances();
txtLaunch.Text = ("Name\tIP Address\tMAC Address\tType" +"\r\n");
foreach (ManagementObject objMO in objMOC)
{
StringBuilder builder = new StringBuilder();
object o = objMO.GetPropertyValue("IPAddress");
object m = objMO.GetPropertyValue("MACAddress");
if (o != null || m != null)
{
builder.Append(objMO["Description"].ToString());
builder.Append("\t");
if (o != null)
builder.Append(((string[])(objMO["IPAddress"]))[0].ToString());
else
builder.Append("NULL");
builder.Append("\t");
builder.Append(m.ToString());
builder.Append("\t");
builder.Append(Convert.ToBoolean(objMO["DHCPEnabled"]) ? "DHCP" : "Static");
builder.Append("\r\n");
}
txtLaunch.Text = txtLaunch.Text + (builder.ToString());
これは私が達成するために探しています何の90%を与えた - コードはうまくいきました。次の部分は、リモートの情報を取得するためにネットワーク上のデバイスを指定することです。私は、これはWMIなしには不可能だったように述べている。下の1つのコメントに気づきました。これは確かに私がいたよりもはるかに近いです。私はこれを達成することができます確信しています。私はここ勧告に開いています。
解決
の編集:申し訳ありませんが、いくつかのプロパティは、いくつかのアダプタでNULLにすることができます。下に固定の
ManagementClass objMC = new ManagementClass(
"Win32_NetworkAdapterConfiguration");
ManagementObjectCollection objMOC = objMC.GetInstances();
Console.WriteLine("Name\tIP Address\tMAC Address\tType");
foreach (ManagementObject objMO in objMOC)
{
StringBuilder builder = new StringBuilder();
builder.Append(objMO["Description"].ToString());
builder.Append("\t");
object o = objMO.GetPropertyValue("IPAddress");
if (o != null)
builder.Append(((string[])(objMO["IPAddress"]))[0].ToString());
else
builder.Append("NULL");
builder.Append("\t");
object m = objMO.GetPropertyValue("MACAddress");
if (m != null)
builder.Append(m.ToString());
else
builder.Append("NULL");
builder.Append("\t");
builder.Append(Convert.ToBoolean(objMO["DHCPEnabled"]) ? "DHCP" : "Static");
Console.WriteLine(builder.ToString());
}
他のヒント
<ストライキ>リモートホストのためにこれをやろうとしている場合は、これを実行することはできません。あなたは、この情報を識別するために、DHCPサーバーとそのログにアクセスする必要があります。ストライキ>
編集:それは利用可能だ場合はもちろん、WMI経由では動作します。
。所属していません StackOverflow