苏飞论坛

标题: C#计算机信息类ComputerInfo [打印本页]

作者: 站长苏飞    时间: 2012-7-2 11:59
标题: C#计算机信息类ComputerInfo
导读部分
-------------------------------------------------------------------------------------------------------------
C#基类|C#自定义类|C#帮助类--系列导航文章
http://www.sufeinet.com/thread-655-1-1.html

下载整个包,只下载现有类是不起作用的 http://www.sufeinet.com/thread-303-1-1.html

[C#] 纯文本查看 复制代码
using System;
using System.Management;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Diagnostics;
using System.Text.RegularExpressions;

namespace BaseFunction
{
    ///<summary>
    ///计算机信息类
    ///</summary>

    public  class ComputerInfo
    {
        private  string CpuID;
        private string MacAddress;
        private string DiskID;
        private string IpAddress;
        private string LoginUserName;
        private string ComputerName;
        private string SystemType;
        private string TotalPhysicalMemory; //单位:M
        private static ComputerInfo _instance;

        internal static ComputerInfo Instance()
        {
            if (_instance == null)
                _instance = new ComputerInfo();
            return _instance;
        }

        internal ComputerInfo()
        {
            CpuID = GetCpuID();
            MacAddress = GetMacAddress();
            DiskID = GetDiskID();
            IpAddress = GetIPAddress();
            LoginUserName = GetUserName();
            SystemType = GetSystemType();
            TotalPhysicalMemory = GetTotalPhysicalMemory();
            ComputerName = GetComputerName();
        }
        /// <summary>
        /// 浏览器客户端  获取网卡MAC地址MD5加密串  杨旭东
        /// </summary>
        /// <returns></returns>
        public static string GetClientMac()
        {
            try
            {
              string clientIP =System.Web.HttpContext.Current.Request.UserHostAddress.Trim();
              Int32 idest = API.inet_addr(clientIP);
              Int64 macInfo = new Int64();
              Int32 length = 6;
              int res = API.SendARP(idest, 0, ref macInfo, ref length);
              string mac_src = macInfo.ToString("X");
              if (!string.IsNullOrEmpty(mac_src) && !"0".Equals(mac_src))
              {
                  while (mac_src.Length < 12)
                  {
                      mac_src = mac_src.Insert(0, "0");
                  }
                  string mac_dest = string.Empty;
                  for (int i = 0; i < 11; i++)
                  {
                      if (i % 2 == 0)
                      {
                          if (i == 10)
                              mac_dest = mac_dest.Insert(0, mac_src.Substring(i, 2));
                          else
                              mac_dest = "-" + mac_dest.Insert(0, mac_src.Substring(i, 2));
                      }
                  }
                  return mac_dest;
              }
            }
            catch
            {
                return "0";
            }
            return "0";
        }

        /// <summary>
        /// 获取CPU序列号代码
        /// </summary>
        /// <returns></returns>
      public  static  string GetCpuID()
        {
            try
            {
                //获取CPU序列号代码
                string cpuInfo = "";//cpu序列号
                ManagementClass mc = new ManagementClass("Win32_Processor");
                ManagementObjectCollection moc = mc.GetInstances();
                foreach (ManagementObject mo in moc)
                {
                    cpuInfo = mo.Properties["ProcessorId"].Value.ToString();
                }
                moc = null;
                mc = null;
                return cpuInfo;
            }
            catch
            {
                return "unknow";
            }
            finally
            {
            }

        }

        /// <summary>
        /// 获取网卡硬件地址
        /// </summary>
        /// <returns></returns>
      public static string GetMacAddress()
        {
            try
            {
                //获取网卡硬件地址
            return Mac.GetMacAddress();
               
            }
            catch
            {
                return "unknow";
            }
            finally
            {
            }
        }

        /// <summary>
        /// 获取IP地址(IPv4)
        /// </summary>
        /// <returns></returns>
      public static string GetIPAddress()
        {
            try
            {
                IPAddress[] arrIPAddresses = Dns.GetHostAddresses(Dns.GetHostName());
                foreach (IPAddress ip in arrIPAddresses)
                {
                    if (ip.AddressFamily.Equals(AddressFamily.InterNetwork))//IPv4
                    {
                        return ip.ToString();
                    }
                }
                return "unknow";
            }
            catch
            {
                return "unknow";
            }
            finally
            {
            }

        }

        /// <summary>
        /// 获取硬盘ID
        /// </summary>
        /// <returns></returns>
      public static string GetDiskID()
        {
            try
            {
             return Win32.GetHddInformation().ModuleNumber;
            }
            catch
            {
                return "unknow";
            }
            finally
            {
            }

        }

        ///<summary>
        ///操作系统的登录用户名
        ///</summary>
        ///<returns></returns>
      public static string GetUserName()
        {
            try
            {
                byte[] userName = new byte[30];
                Int32[] length = new Int32[1];
                length[0] = 30;//限定用户名长度
                API.GetUserName(userName, length);
                return System.Text.Encoding.ASCII.GetString(userName);
            }
            catch
            {
                return "unknow";
            }
            finally
            {
            }

        }


        ///<summary>
        /// PC类型
        ///</summary>
        ///<returns></returns>
      public static string GetSystemType()
        {
            try
            {
                string st = "";
                ManagementClass mc = new ManagementClass("Win32_ComputerSystem");
                ManagementObjectCollection moc = mc.GetInstances();
                foreach (ManagementObject mo in moc)
                {

                    st = mo["SystemType"].ToString();

                }
                moc = null;
                mc = null;
                return st;
            }
            catch
            {
                return "unknow";
            }
            finally
            {
            }

        }

        ///<summary>
        ///物理内存
        ///</summary>
        ///<returns></returns>
      public static string GetTotalPhysicalMemory()
        {
            try
            {

                API.MEMORY_INFO memoryInfo = new API.MEMORY_INFO();
                API.GlobalMemoryStatus(ref memoryInfo);
                return memoryInfo.dwTotalPhys.ToString();
            }
            catch
            {
                return "unknow";
            }
            finally
            {
            }
        }
        ///<summary>
        /// 获取计算机名称
        ///</summary>
        ///<returns></returns>
      public static string GetComputerName()
        {
            try
            {
                byte[] computerName = new byte[30];
                Int32[] length = new Int32[1];
                length[0] = 30;//限定计算机名长度
                API.GetComputerName(computerName,length);
                return System.Text.Encoding.ASCII.GetString(computerName);
            }
            catch
            {
                return "unknow";
            }
            finally
            {
            }
        }
    }
}

作者: Jesse    时间: 2012-8-12 19:38
您这个是不是少了几个class?MAC and WIN32?
作者: 站长苏飞    时间: 2012-8-22 09:13
Jesse 发表于 2012-8-12 11:38
您这个是不是少了几个class?MAC and WIN32?

不需要吧
作者: Jesse    时间: 2012-8-25 10:25
admin 发表于 2012-8-22 09:13
不需要吧

但是我这儿确实报错了。

作者: yangying    时间: 2012-8-25 10:59
Jesse 发表于 2012-8-25 10:25
但是我这儿确实报错了。

哦,那你去下载工具包吧
http://www.sufeinet.com/thread-303-1-1.html
作者: Jesse    时间: 2012-8-25 15:34
yangying 发表于 2012-8-25 10:59
哦,那你去下载工具包吧
http://www.sufeinet.com/forum.php?mod=viewthread&tid=303

Thanks very much..
作者: 梧桐树下    时间: 2012-11-27 10:42
真心感谢。。
作者: gangn    时间: 2013-7-18 22:05
真是难得给力的帖子啊,强烈支持楼主。
作者: 怪人老王    时间: 2014-4-4 00:14
受教了,学习中……
作者: atgu2je    时间: 2014-5-24 08:30
受教了,学习中……
作者: ed2000de    时间: 2014-6-1 22:20
下载整个包,只下载现有类是不起作用的 http://www.sufeinet.com/thread-303-1-1.html
作者: ed2000de    时间: 2014-6-1 22:20
下载整个包,只下载现有类是不起作用的 http://www.sufeinet.com/thread-303-1-1.html
地址失效。。。。。
作者: ching126    时间: 2014-9-4 12:34
强烈支持楼主ing……
作者: aniuge    时间: 2015-10-29 00:11
强烈支持楼主ing……
作者: aniuge    时间: 2015-10-29 00:11
谢谢分享

作者: xjl203    时间: 2015-10-31 21:50

作者: helloword    时间: 2015-11-10 11:18
为什么 链接都跳到黄站呢
作者: 站长苏飞    时间: 2015-11-10 11:22
helloword 发表于 2015-11-10 11:18
为什么 链接都跳到黄站呢

以前的老域名,有些早期的文章没有修改链接
作者: 天上跑着玩    时间: 2017-7-25 09:41
我少 SyC:\Users\Administrator\Desktop\newscreen6725203.jpgstem.Management 和 System.Web.HttpContext这两个而且System.Management 网上下载不到
作者: 站长苏飞    时间: 2017-7-25 12:03
天上跑着玩 发表于 2017-7-25 09:41
我少 System.Management 和 System.Web.HttpContext这两个而且System.Management 网上下载不到

直接下载基类库,里面什么都有




欢迎光临 苏飞论坛 (http://www.sufeinet.com/) Powered by Discuz! X3.4