C# 本机信息与局域网信息的获取

本机信息与局域网信息的获取,需要用到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 { }
        }

上面有代码会输出如下信息:
NON-ITLi
NON-CSLisa

下载代码
/Files/whtydn/ConsoleApplication1.rar

原文地址:https://www.cnblogs.com/whtydn/p/1535429.html