读书人

初学者未解决的有关问题,C#编程获取本

发布时间: 2012-02-29 16:44:10 作者: rapoo

菜鸟未解决的问题,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
{
}
}


}
}

忘了转自哪里了。。。

读书人网 >C#

热点推荐