zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    单例模式(Singleton)的6种实现
    深入浅出单实例Singleton设计模式
    Singleton单例模式
    面试中的Singleton
    海量数据存储之Key-Value存储简介
    大数据时代的 9 大Key-Value存储数据库
    python 多线程两种实现方式,Python多线程下的_strptime问题,
    pycURL的内存问题
    百万级访问网站前期的技术准备
    IPv6 tutorial – Part 6: Site-local addresses and link-local addresses
  • 原文地址:https://www.cnblogs.com/whtydn/p/1535429.html
Copyright © 2011-2022 走看看