ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration"); ManagementObjectCollection moc = mc.GetInstances(); foreach (ManagementObject mo in moc) { if ((bool)mo["IPEnabled"]) { string ip = ((string[])mo["IPAddress"])[0]; string mac = mo["MACAddress"].ToString(); break; } }
ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
ManagementObjectCollection moc = mc.GetInstances();
foreach (ManagementObject mo in moc)
{
if ((bool)mo["IPEnabled"])
{
string ip = ((string[])mo["IPAddress"])[0];
string mac = mo["MACAddress"].ToString(); break;
}
}
关于WMI,楼主可以Google,百度看看
而Win32_NetworkAdapterConfiguration,楼主可以查阅MSDN了解其中的具体结构当然,楼主也可以自己用Windows自带的WMIC(Windows Management Instructmentation Command-Line)来测试Win32_NetworkAdapterConfiguration,具体做法是:
运行wmic命令,第一次运行会优点慢,因为Windows会要安装WMIC
安装完了后, 楼主会进入一个类似于DOS的命令行界面,要测试Win32_NetworkAdapterConfiguration, 可以使用path命令path Win32_NetworkAdapterConfiguration从返回的数据可以详细看到Win32_NetworkAdapterConfiguration的结构关于WMIC, 楼主请自行搜索
去注册表读吧
要不就是用string strIP = System.Net.Dns.GetHostByName(System.Net.Dns.GetHostName()).AddressList[0].ToString();
using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.Win32;
using System.IO;
using System.Windows.Forms;namespace GetIpConfig
{
class CardGrab
{
public void getIp(TextBox textBoxDeviceName, TextBox textBoxIPAddress, TextBox textBoxSubnetMask, TextBox textBoxGateway)
{
//指定一个开始关键字搜索的根关键字
RegistryKey start = Registry.LocalMachine;
RegistryKey cardSerivceName, networkKey;
string networkcardKey = "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\NetworkCards";
string serivceKey = "SYSTEM\\CurrentControlSet\\Services\\";
string networkcardKeyName, deviceName;
string deviveServiceName, serviceName;
//关键字对象到相应的包含网络设备信息的子关键字
RegistryKey serviceNames = start.OpenSubKey(networkcardKey);
if (serviceNames == null)
{
MessageBox.Show("Bad registry Key","错误",MessageBoxButtons.OK,MessageBoxIcon.Error);
}
string[] networkCards = serviceNames.GetSubKeyNames();
serviceNames.Close();
//对每个网络设备的字关键字名重复使用GetSubKeyNames()方法。
foreach(string keyName in networkCards)
{
//由于服务关键字使用相同的关键字名,所以把那个值加到已知服务关键字的位置。
networkcardKeyName = networkcardKey + "\\" + keyName;
//用OpenSubKey()方法打开该关键字
cardSerivceName = start.OpenSubKey(networkcardKeyName);
if(cardSerivceName == null)
{
MessageBox.Show("Bad Registry Key:" + networkcardKeyName,"错误",MessageBoxButtons.OK,MessageBoxIcon.Error);
}
//在打开了每个关键字之后,就可以用该关键字对象的GetValue()方法从服务关键字中检索IP信息了
//由于每条IP信息的数据入口可以有多个值,所以把结果分配到一个字符串数组,并用foreach显示完整的数组
deviveServiceName = (string)cardSerivceName.GetValue("ServiceName");
deviceName = (string)cardSerivceName.GetValue("Description");
textBoxDeviceName.Text = deviceName;
serviceName = serivceKey + deviveServiceName + "\\Parameters\\Tcpip";
networkKey = start.OpenSubKey(serviceName);
if (networkKey == null)
{
MessageBox.Show("No IP Configuration Set","错误",MessageBoxButtons.OK,MessageBoxIcon.Information);
}
else
{
string[] ipaddresses = (string[])networkKey.GetValue("IPAddress");
string[] defaultGateways = (string[])networkKey.GetValue("DefaultGateway");
string[] subnets = (string[])networkKey.GetValue("SubnetMask");
foreach (string ipaddress in ipaddresses)
{
textBoxIPAddress.Text = ipaddress;
}
foreach (string subnetmask in subnets)
{
textBoxSubnetMask.Text = subnetmask;
}
foreach (string defaultGateway in defaultGateways)
{
textBoxGateway.Text = defaultGateway;
}
networkKey.Close();
}
}
start.Close();
}
}爱选哪种就选哪种,我现在看出华侨大学的素质了,
原来家乡的大学真是太差劲了
单机板的吗?
我觉得好像没有意义啊,
这个多好啊,要不得到用户的CUP编号也可以的,WMI都可以做到的