C#获取机器信息的方法

来源:互联网 发布:fpgrowth算法详解 编辑:程序博客网 时间:2024/06/05 09:31

1、使用ManagementClass类获取本机Mac地址
示例代码演示了使用ManagementClass获取本机IP地址的方法,还可以使用类似的方法获取本机的IP地址、CPU序列号、硬盘ID、物理内存等信息。

        /// <summary>        /// 获取Mac地址        /// </summary>        /// <returns></returns>        public static string GetMacAddress()        {            try            {                using (ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration"))                {                    using (ManagementObjectCollection moc = mc.GetInstances())                    {                        string macAddress = "";                        foreach (ManagementObject mo in moc)                        {                            if ((bool)mo["IPEnabled"] == true)                            {                                macAddress = mo["MacAddress"].ToString();                                break;                            }                        }                        return macAddress;                    }                }            }            catch            {                return "unknow";            }            finally            {            }        }

还可以使用ManagementObjectSearcher类来得到ManagementObjectCollection对象。下面是完整代码。

        /// <summary>        /// 获取本机的MAC        /// </summary>        /// <returns></returns>        public static string GetLocalMac()        {            using (ManagementObjectSearcher query = new ManagementObjectSearcher("SELECT * FROM Win32_NetworkAdapterConfiguration"))            {                using (ManagementObjectCollection queryCollection = query.Get())                {                    string mac = null;                    foreach (ManagementObject mo in queryCollection)                    {                        if ((bool)mo["IPEnabled"] == true)                            mac = mo["MacAddress"].ToString();                    }                    return (mac);                }            }        }

2、使用Environment类获取用户名
示例代码演示通过Environment类获取用户名,使用该类还可以获取计算机名、程序当前工作目录、系统支持的换行字符串等信息。

        /// <summary>        /// 获取操作系统的登录用户名         /// </summary>        /// <returns></returns>        public static string GetUserName()        {            try            {                return Environment.UserName;            }            catch            {                return "unknow";            }            finally            {            }        }

3、使用Dns类获取本机和远程机器的IP地址
Dns类位于System.Net命名空间下,使用GetHostEntry()方法可以根据传入的主机名称得到对应的IP地址。

        /// <summary>        /// 获取本机IP地址        /// </summary>        /// <returns></returns>        public static string GetLocalIP()        {            string strHostName = Dns.GetHostName(); //得到本机的主机名            IPHostEntry ipEntry = Dns.GetHostEntry(strHostName); //取得本机IP            return ipEntry.AddressList[0].ToString();        }        /// <summary>        /// 获取远程主机IP        /// </summary>        /// <param name="remoteHostName"></param>        /// <returns></returns>        public string[] GetRemoteIP(string remoteHostName)        {            IPHostEntry ipEntry = Dns.GetHostEntry(remoteHostName);            IPAddress[] ipAddr = ipEntry.AddressList;            string[] strIpAddr = new string[ipAddr.Length];            for (int i = 0; i < ipAddr.Length; i++)            {                strIpAddr[i] = ipAddr[i].ToString();            }            return strIpAddr;        }

4、使用系统API方法获取远程机器Mac地址
inet_addr()方法将字符串形式的IP地址转换成32位整型,SendARP()方法获取远程机器的Mac地址。

        [DllImport("Iphlpapi.dll")]        private static extern int SendARP(Int32 dest, Int32 host, ref Int64 mac, ref Int32 length);        [DllImport("Ws2_32.dll")]        private static extern Int32 inet_addr(string ip);        /// 获取远程主机MAC        /// </summary>        /// <param name="localIP"></param>        /// <param name="remoteIP"></param>        /// <returns></returns>        public string GetRemoteMac(string localIP, string remoteIP)        {            try            {                Int32 ldest = inet_addr(remoteIP); //目的ip                 Int64 macinfo = new Int64();                Int32 len = 6;                int res = SendARP(ldest, 0, ref macinfo, ref len);                return Convert.ToString(macinfo, 16);            }            catch            {                return "0";            }        }
0 0
原创粉丝点击