C# 本機資訊與區域網路資訊的擷取

來源:互聯網
上載者:User

本機資訊與區域網路資訊的擷取,需要用到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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.