2010-03-29 23 views
1

Aimerait connaître le code C# pour récupérer réellement le type IP: Statique ou DHCP basé sur une liste de périphériques que je vais entrer.C# Interroger plusieurs périphériques pour déterminer le type IP: Statique ou DHCP

sortie à visualiser:

 
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()); 

Cela m'a donné 90% de ce que je cherche à atteindre - le code a bien. La partie suivante consiste à spécifier un périphérique sur le réseau pour obtenir les informations à distance. J'ai remarqué le commentaire ci-dessous qui a déclaré que c'était impossible sans WMI. C'est certainement beaucoup plus proche que j'étais. Je suis convaincu que cela peut être accompli. Je suis ouvert aux recommandations ici.

Répondre

2

EDIT: désolé, certaines propriétés peuvent être NULL sur certaines cartes. Fixe ci-dessous

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()); 
} 
+0

Avez-vous une recommandation quant à la façon d'interroger d'autres appareils sur un réseau? –

0

Si vous essayez de le faire pour les hôtes distants, vous ne serez pas en mesure de le faire. Vous aurez besoin d'accéder au serveur DHCP et à sa journalisation pour identifier ces informations.

Modifier: bien sûr, grâce à WMI fonctionne si cela est disponible.