首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

初学者未解决的有关问题,C#编程获取本地网关的IP和MAC地址

2012-02-29 
菜鸟未解决的问题,C#编程获取本地网关的IP和MAC地址!我在学习C#语言的过程中,遇到个问题,不知如何获取本地

菜鸟未解决的问题,C#编程获取本地网关的IP和MAC地址!
我在学习C#语言的过程中,遇到个问题,不知如何获取本地网关的IP和MAC地址,我编的程序段如下:
private   void   Form1_Load(object   sender,   EventArgs   e)
                {
                        ManagementClass       mc;  
                        mc=new       ManagementClass( "Win32_NetworkAdapterConfiguration ");  
                        ManagementObjectCollection       moc=mc.GetInstances();  
                        foreach(ManagementObject       mo       in       moc)  
                        {
                                if   (mo[ "IPEnabled "].ToString()   ==   "True ")
                                {
                                        string   IPst;
                                        string   MACst;
                                        IPst   =   (mo[ "DefaultIPGateway "]   as   String[])[0];
                                        MACst   =   mo[ "DefaultMACGateway "].ToString();
                                        MACst   =   MACst.Replace( ": ",   "- ");
                                        IPAddr.Text   =   IPst;
                                        MACAddr.Text   =   MACst;
                                  }
                            }
                }

其中的DefaultIPGateway是可以获取的,已经编译实现过了,可是DefaultMACGateway却没有通过编译,   菜鸟在此请教如何获取网关的MAC地址,我这样获取对吗?

我在用ARP   -A命令时是可以看到本机的IP和MAC地址以及网关的IP和MAC地址,按理说应该可以获取的,   不知应该怎么获取!

[解决办法]
关注,帮你顶
[解决办法]
也想知道 帮你顶
[解决办法]
ManagementClass oMClass = new ManagementClass ( "Win32_NetworkAdapterConfiguration ");
ManagementObjectCollection colMObj = oMCLass.GetInstances();
foreach(ManagementObject objMO in colMObj)
{


Console.WriteLine(objMO[ "MacAddress "].ToString());
}
测试一下上面这一段
[解决办法]
private string GetMacAddr()
{
try
{
ManagementClass mc = new ManagementClass( "Win32_NetworkAdapterConfiguration ");
ManagementObjectCollection moc = mc.GetInstances();
foreach (ManagementObject mo in moc)
{
if ((bool)mo[ "IPEnabled "] == true)
return (mo[ "MacAddress "].ToString());
mo.Dispose();
}
return null;
}
catch
{
MessageBox.Show( "取MAC出错,请重新运行本程序... ");
return null;
}
}
[解决办法]
这个可能有用
http://www.gotdotnet.com/Community/UserSamples/Details.aspx?SampleGuid=e30534db-5e28-4868-9a2c-96662728fda1
[解决办法]
//一个比较傻的方法,通过执行命令行“ipconfig /all”分析输出的字符串得到

using System.Diagnostics;

private void button1_Click(object sender, EventArgs e)
{
Process vProcess = new Process();
vProcess.StartInfo.FileName = "cmd.exe ";
vProcess.StartInfo.UseShellExecute = false;
vProcess.StartInfo.RedirectStandardInput = true;
vProcess.StartInfo.RedirectStandardOutput = true;
vProcess.StartInfo.RedirectStandardError = true;
vProcess.StartInfo.CreateNoWindow = true;

vProcess.Start();
vProcess.StandardInput.WriteLine(@ "ipconfig /all ");
vProcess.StandardInput.WriteLine( "exit ");
textBox1.Text = vProcess.StandardOutput.ReadToEnd();
vProcess.Close();
}

[解决办法]
using System;
using System.Management;
namespace Soyee.Comm
{
/// <summary>
/// Computer Information
/// </summary>
public class Computer
{
public string CpuID;
public string MacAddress;
public string DiskID;
public string IpAddress;
public string LoginUserName;
public string ComputerName;
public string SystemType;
public string TotalPhysicalMemory; //单位:M
private static Computer _instance;
public static Computer Instance()
{
if (_instance == null)
_instance = new Computer();
return _instance;
}
protected Computer()
{
CpuID=GetCpuID();
MacAddress=GetMacAddress();
DiskID=GetDiskID();
IpAddress=GetIPAddress();
LoginUserName=GetUserName();
SystemType=GetSystemType();
TotalPhysicalMemory=GetTotalPhysicalMemory();
ComputerName=GetComputerName();
}
string GetCpuID()
{
try
{
//获取CPU序列号代码
string cpuInfo = " ";//cpu序列号
ManagementClass mc = new ManagementClass( "Win32_Processor ");
ManagementObjectCollection moc = mc.GetInstances();
foreach(ManagementObject mo in moc)
{
cpuInfo = mo.Properties[ "ProcessorId "].Value.ToString();
}
moc=null;
mc=null;
return cpuInfo;
}
catch
{
return "unknow ";
}
finally
{
}

}
string GetMacAddress()


{
try
{
//获取网卡硬件地址
string mac= " ";
ManagementClass mc = new ManagementClass( "Win32_NetworkAdapterConfiguration ");
ManagementObjectCollection moc = mc.GetInstances();
foreach(ManagementObject mo in moc)
{
if((bool)mo[ "IPEnabled "] == true)
{
mac=mo[ "MacAddress "].ToString();
break;
}
}
moc=null;
mc=null;
return mac;
}
catch
{
return "unknow ";
}
finally
{
}

}
string GetIPAddress()
{
try
{
//获取IP地址
string st= " ";
ManagementClass mc = new ManagementClass( "Win32_NetworkAdapterConfiguration ");
ManagementObjectCollection moc = mc.GetInstances();
foreach(ManagementObject mo in moc)
{
if((bool)mo[ "IPEnabled "] == true)
{
//st=mo[ "IpAddress "].ToString();
System.Array ar;
ar=(System.Array)(mo.Properties[ "IpAddress "].Value);
st=ar.GetValue(0).ToString();
break;
}
}
moc=null;
mc=null;
return st;
}
catch
{
return "unknow ";
}
finally
{
}

}

string GetDiskID()
{
try
{
//获取硬盘ID
String HDid= " ";
ManagementClass mc = new ManagementClass( "Win32_DiskDrive ");
ManagementObjectCollection moc = mc.GetInstances();
foreach(ManagementObject mo in moc)
{
HDid = (string)mo.Properties[ "Model "].Value;
}
moc=null;
mc=null;
return HDid;
}
catch
{
return "unknow ";
}
finally
{
}

}

/// <summary>
/// 操作系统的登录用户名
/// </summary>
/// <returns> </returns>
string GetUserName()
{
try
{
string st= " ";
ManagementClass mc = new ManagementClass( "Win32_ComputerSystem ");
ManagementObjectCollection moc = mc.GetInstances();
foreach(ManagementObject mo in moc)
{

st=mo[ "UserName "].ToString();

}
moc=null;
mc=null;
return st;
}
catch
{
return "unknow ";
}
finally
{
}

}


/// <summary>
/// PC类型
/// </summary>
/// <returns> </returns>
string GetSystemType()
{
try
{
string st= " ";
ManagementClass mc = new ManagementClass( "Win32_ComputerSystem ");
ManagementObjectCollection moc = mc.GetInstances();
foreach(ManagementObject mo in moc)
{

st=mo[ "SystemType "].ToString();

}
moc=null;
mc=null;
return st;
}
catch
{
return "unknow ";
}
finally
{
}

}

/// <summary>
/// 物理内存
/// </summary>
/// <returns> </returns>
string GetTotalPhysicalMemory()
{
try
{

string st= " ";
ManagementClass mc = new ManagementClass( "Win32_ComputerSystem ");


ManagementObjectCollection moc = mc.GetInstances();
foreach(ManagementObject mo in moc)
{

st=mo[ "TotalPhysicalMemory "].ToString();

}
moc=null;
mc=null;
return st;
}
catch
{
return "unknow ";
}
finally
{
}
}
/// <summary>
///
/// </summary>
/// <returns> </returns>
string GetComputerName()
{
try
{
return System.Environment.GetEnvironmentVariable( "ComputerName ");
}
catch
{
return "unknow ";
}
finally
{
}
}


}
}

忘了转自哪里了。。。

热点排行