本机信息与局域网信息的获取,需要用到Management这个类,这个类的功能十分强大,可以实现的事情也很多,下面我来列举部分实现本机与局域网信息的例子。
首先对项目添加System.Management引用,然后在代码上面输入using System.Management
下面来看看如何取得本机信息:
private static string ipAddress = "";
static void Main(string[] args)
{
string macAddress = "";
ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
ManagementObjectCollection mac = mc.GetInstances();
foreach (ManagementObject mo in mac)
{
if ((bool)mo["IPEnabled"] == true)
{
macAddress += mo["MacAddress"].ToString();
}
}
macAddress = macAddress.Replace(':', '-');
IPAddress[] ipAddressList = Dns.GetHostByName(Dns.GetHostName()).AddressList;
for (int i = 0; i < ipAddressList.Length; i++)
{
ipAddress += ipAddressList[i].ToString();
}
Console.WriteLine(macAddress); //MacAddress
Console.WriteLine(ipAddress); //IPAddress
Console.WriteLine(Dns.GetHostName()); //HostName
Console.WriteLine(Environment.UserName); //UserName
Console.WriteLine(Environment.UserDomainName); //DomainName
Console.ReadLine();
}
上面有代码会输出如下信息:
00-1E-C9-29-59-D7
192.168.1.1
NON-Alex
Alex
CompanyLan
下面是通过IP进行判断,局域网里面的本网段主机:
private static void HostsInit()
{
IPHostEntry host = new IPHostEntry();
string fristIP = ipAddress.Substring(0, ipAddress.LastIndexOf('.') + 1);
for (int i = 100; i <= 254; i++)
{
Dns.BeginGetHostByName(fristIP + i, new AsyncCallback(HostsInitCallback), host);
}
}
private static void HostsInitCallback(IAsyncResult ar)
{
try
{
IPHostEntry host = Dns.EndGetHostByName(ar);
IPHostEntry host1 = Dns.GetHostByAddress(host.AddressList[0]);
if (host1.HostName.Trim() != Dns.GetHostName())
{
Console.WriteLine("列出局域网本网段的电脑主机名:");
Console.WriteLine(host1.HostName);
//在这里把文件神不知鬼不觉的复制给他们,
//这里我只实现了共享的或映射驱动器传送,
//如果你公司的电脑是组成一个域的,那么强制传送文件也是可以实现的(因为我们是公司IT先锋,总会知道域里超级用户与密码),
//不知那个园友来补充,无论怎样都是强制的传送给他们
}
}
catch { }
}
{
IPHostEntry host = new IPHostEntry();
string fristIP = ipAddress.Substring(0, ipAddress.LastIndexOf('.') + 1);
for (int i = 100; i <= 254; i++)
{
Dns.BeginGetHostByName(fristIP + i, new AsyncCallback(HostsInitCallback), host);
}
}
private static void HostsInitCallback(IAsyncResult ar)
{
try
{
IPHostEntry host = Dns.EndGetHostByName(ar);
IPHostEntry host1 = Dns.GetHostByAddress(host.AddressList[0]);
if (host1.HostName.Trim() != Dns.GetHostName())
{
Console.WriteLine("列出局域网本网段的电脑主机名:");
Console.WriteLine(host1.HostName);
//在这里把文件神不知鬼不觉的复制给他们,
//这里我只实现了共享的或映射驱动器传送,
//如果你公司的电脑是组成一个域的,那么强制传送文件也是可以实现的(因为我们是公司IT先锋,总会知道域里超级用户与密码),
//不知那个园友来补充,无论怎样都是强制的传送给他们
}
}
catch { }
}
上面有代码会输出如下信息:
NON-ITLi
NON-CSLisa
/Files/whtydn/ConsoleApplication1.rar