C# 32Bit电脑环境帮助类

来源:互联网 发布:电脑rar解压软件 编辑:程序博客网 时间:2024/06/08 07:28

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Management;using System.IO;using System.Diagnostics;using System.Net;namespace Utility{    /// <summary>    /// @Author:梁继龙    /// @Date:2012/8/1    /// @Description:32Bit电脑环境帮助类    /// Environment    /// </summary>    public class ComputerEnvirHelper    {        public string CpuID;        public string MacAddress;        public string DiskID;        public string IpAddress;        public string LoginUserName;        public string ComputerName;        public string SystemType;        public string TotalPhysicalMemory; //单位:M         private static ComputerEnvirHelper _instance;        /// <summary>        /// 使用单例模式的时,其他方法不能用static修饰.        /// </summary>        /// <returns></returns>        public static ComputerEnvirHelper GetInstance()        {            if (_instance == null)            {                _instance = new ComputerEnvirHelper();            }            return _instance;        }        /// <summary>        /// 构造方法        /// </summary>        public ComputerEnvirHelper()        {            CpuID = GetCpuID();            MacAddress = GetMacAddress();            DiskID = GetDiskNumber();            // IpAddress = GetIPAddress();            LoginUserName = GetSystemUserName();            //SystemType = GetSystemType();            TotalPhysicalMemory = GetTotalPhysicalMemory2();            ComputerName = GetComputerName();        }         /// <summary>        /// 获取Mac的地址        /// </summary>        /// <returns></returns>        public string GetMacAddress()        {            try            {                //获取网卡硬件地址                string mac = "";                ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");                ManagementObjectCollection moc = mc.GetInstances();                foreach (ManagementObject mo in moc)                {                    if ((bool)mo["IPEnabled"] == true)                    {                        mac = mo["MacAddress"].ToString();                        break;                    }                }                moc = null;                mc = null;                return mac;            }            catch            {                return "unknow";            }        }        /// <summary>        /// 获取Ip地址        /// </summary>        /// <returns></returns>        public string GetIPAddress()        {            try            {                //获取IP地址                 string st = "";                ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");                ManagementObjectCollection moc = mc.GetInstances();                foreach (ManagementObject mo in moc)                {                    if (Convert.ToBoolean(mo) == true)                    {                        st = mo.ToString();                        //System.Array ar;                        //ar = (System.Array)(mo.Properties.Value);                        //st = ar.GetValue(0).ToString();                        break;                    }                }                moc = null;                mc = null;                return st;            }            catch            {                return "unknow";            }        }          /// <summary>        /// 获取客户端内网IP地址        /// </summary>        /// <returns></returns>        public string getClientLocalIPAddress()        {            string localIP = null;            try            {                IPHostEntry ipHost = System.Net.Dns.GetHostEntry(Dns.GetHostName());// Dns.Resolve(Dns.GetHostName()); ;                IPAddress ipaddress = ipHost.AddressList[0];                localIP = ipaddress.ToString();                return "内网IP地址:" + localIP;            }            catch            {                return "内网IP地址:unknown";            }        }         /// <summary>        /// 获得客户端外网IP地址        /// <param name="downloadIpAddress">从外部网页获得IP地址</param>        /// <param name="providerIPAddres">客户端提供的API中获得IP地址</param>        /// <returns></returns>        public string getClientInternetIPAddress(string downloadIpAddress, string providerIPAddres)        {            string internetAddress = "";            string reg = "[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}";//判断IP的正则表达式            try            {                using (WebClient webClient = new WebClient())                {                    internetAddress = webClient.DownloadString(downloadIpAddress);                    //判断IP是否合法                    if (!System.Text.RegularExpressions.Regex.IsMatch(internetAddress, reg))                    {                        internetAddress = webClient.DownloadString(providerIPAddres);                    }                }                return "外网IP地址:" + internetAddress;            }            catch            {                return "外网IP地址:unknown";            }        }         /// <summary>        /// 获取CPU的ID        /// </summary>        /// <returns></returns>        public 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";            }        }        /// <summary>        ///获取硬盘编号         /// </summary>        /// <returns></returns>        public string GetDiskNumber()        {            ManagementClass mc = new ManagementClass("Win32_PhysicalMedia");            try            {                //网上有提到,用Win32_DiskDrive,但是用Win32_DiskDrive获得的硬盘信息中并不包含SerialNumber属性。                ManagementObjectCollection moc = mc.GetInstances();                string strID = null;                foreach (ManagementObject mo in moc)                {                    strID = mo.Properties["SerialNumber"].Value.ToString();                    break;                }                return strID;            }            catch (Exception)            {                throw;            }        }        /// <summary>        /// 获取驱动ID        /// </summary>        /// <returns></returns>        public string GetDiskID()        {            try            {                String HDid = "";                ManagementClass mc = new ManagementClass("Win32_DiskDrive");                ManagementObjectCollection moc = mc.GetInstances();                foreach (ManagementObject mo in moc)                {                    //HDid = (string)mo.Properties["Model"].ToString();                    HDid = (String)mo.Properties["Model"].Value.ToString();                }                moc = null;                mc = null;                return HDid;            }            catch            {                return "unknow";            }        }         /// <summary>        /// 获取主板编号        /// </summary>        /// <returns></returns>        public string GetMotherboardNumber()        {            try            {                ManagementClass mc = new ManagementClass("Win32_BaseBoard");                ManagementObjectCollection moc = mc.GetInstances();                string strID = null;                foreach (ManagementObject mo in moc)                {                    strID = mo.Properties["SerialNumber"].Value.ToString();                    break;                }                return strID;            }            catch (Exception)            {                throw;            }        }         /// <summary>        ///获取驱动器        ///DriveType驱动类型        ///Name驱动名        /// </summary>        /// <returns></returns>        public string GetDriveInfo()        {            string dr = "";            try            {                DriveInfo[] allDrives = DriveInfo.GetDrives();                // GetDrives : 检索计算机上的所有逻辑驱动器的驱动器名称、Environment.NewLine                foreach (DriveInfo driver in allDrives)                {                    dr = "驱动类型:(" + driver.DriveType.ToString() + ")" + "&" + "驱动名:(" + driver.Name + ")";                }                return dr;            }            catch (Exception)            {                throw;            }         }        /// <summary>         /// 操作系统的带有路径 登录用户名         /// </summary>         /// <returns></returns>         public string GetSystemUserName()        {            try            {                string st = "";                ManagementClass mc = new ManagementClass("Win32_ComputerSystem");                ManagementObjectCollection moc = mc.GetInstances();                foreach (ManagementObject mo in moc)                {                    st = mo.ToString();                }                moc = null;                mc = null;                return st;            }            catch            {                return "unknow";            }        }          /// <summary>         /// 物理内存         /// 使用"SELECT * FROM Win32_PhysicalMemory"查询,        /// 得到的"Capacity"值就是单根内存的容量.不知为什么        /// 使用这个方法的误差很大,有时候4G的容量只能读出2G        /// </summary>         /// <returns></returns>         public string GetTotalPhysicalMemory1(string SQL)        {            try            {                ManagementScope ms = new ManagementScope();                ms.Connect();                ObjectQuery query = new ObjectQuery(SQL);                //query.QueryString = "SELECT * FROM Win32_PhysicalMemory";                ManagementObjectSearcher sercher = new ManagementObjectSearcher(ms, query);                ManagementObjectCollection memMoc = sercher.Get();                long capacityTemp = 0;                foreach (ManagementObject mo in memMoc)                {                    //内存总量等于所有插槽上内存容量之和                    capacityTemp += Convert.ToInt64(mo["Capacity"].ToString());                }                return capacityTemp.ToString();            }            catch (Exception)            {                throw;            }        }        /// <summary>        /// 获取物理内存        /// 误差还是比较大        /// </summary>        /// <returns></returns>        public string GetTotalPhysicalMemory2()        {            try            {                string st = "";                ManagementClass mc = new ManagementClass("Win32_ComputerSystem");                ManagementObjectCollection moc = mc.GetInstances();                foreach (ManagementObject mo in moc)                {                    st = mo["TotalPhysicalMemory"].ToString();                }                moc = null;                mc = null;                return st;            }            catch            {                return "unknow";            }        }        /// 获取当前进程的磁盘内存,误差还是比较大        /// </summary>        /// <returns></returns>        public string GetProcessPhysicalMemory()        {            string str = "";            try            {                string procName = Process.GetCurrentProcess().ProcessName;                using (PerformanceCounter pc = new PerformanceCounter                ("Process", "Private Bytes", procName))                {                    str = (pc.NextValue() / 1000).ToString();                }                return str;            }            catch (Exception)            {                throw;            }         }         /// <summary>        /// 获取当前系统类型        /// </summary>        /// <returns></returns>        public 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";            }        }         /// <summary>         /// 获取计算机名        /// </summary>         /// <returns></returns>         public string GetComputerName()        {            try            {                //return System.Environment.MachineName                return System.Environment.GetEnvironmentVariable("ComputerName");            }            catch            {                return "unknow";            }        }         /// <summary>         /// 获取用户名机名        /// </summary>         /// <returns></returns>         public string GetComputerUserName()        {            try            {                return System.Environment.UserName;                //return System.Environment.GetEnvironmentVariable("UserName");            }            catch            {                return "unknow";            }        }      }}  //////////////////////////////////////////////////////////////////////////////客户端////////////////////////////////////////////////////////////////using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using Model;using BLL;using DAL;using System.Reflection;using log4net;using NPOI.HSSF.UserModel;using System.Data.SqlClient;using Utility; [assembly: log4net.Config.XmlConfigurator(Watch = true)]namespace MyApp{    /// <summary>    /// http://www.cnblogs.com/yazdao/archive/2012/03/31/2426458.html    /// </summary>    public partial class ComputerFrm : Form    {        public ComputerFrm()        {            InitializeComponent();        }         private void Form1_Load(object sender, EventArgs e)        {         }         private void button1_Click(object sender, EventArgs e)        {            //listBox1.Items.Clear();            //UsersDAL model = new UsersDAL();            //Module m = model.GetType().Module;             //Assembly curAssembly = Assembly.GetExecutingAssembly();             //listBox1.Items.Add("名称:" + m.Name);            //listBox1.Items.Add("名称curAssemble:" + curAssembly);             //Module[] mods = curAssembly.GetModules();            //foreach (Module md in mods)            //{            //    listBox1.Items.Add("名称:" + md.Name);            //}         }        //ILog log = log4net.LogManager.GetLogger(typeof(Form1));          private void DataView_Click(object sender, EventArgs e)        {            Random random = new Random();            List<Users> list = new UsersBLL().GetLists();                        dataGridView1.DataSource = list;                   }        /// <summary>        /// 对btnConfig_Click        /// </summary>        /// <param name="sender"></param>        /// <param name="e"></param>        private void btnConfig_Click(object sender, EventArgs e)        {            /**             * @Author:jilongliang             * @Date:2012/7/31             * @Description:Application与AppDomain应用             *              * Application.StartupPath 与AppDomain.CurrentDomain.BaseDirectory都是判断当前启动的工程,并体现能找到             * E:\\ASP.NET\\MyApp\\MyApp\\bin\\Debug路径下面,唯有不同的就是AppDomain.CurrentDomain.BaseDirectory             * 多了个\\             * Application.Exit();可以实现注销功能 其实与this.Close();类似             */            string Path1 = Application.StartupPath + "\\Images\\images.jpg"; //E:\\ASP.NET\\MyApp\\MyApp\\bin\\Debug            string Path2 = System.AppDomain.CurrentDomain.BaseDirectory + "Images\\images.jpg";//E:\\ASP.NET\\MyApp\\MyApp\\bin\\Debug\\            /*             * AppDomain.CurrentDomain.SetupInformation.ConfigurationFile这个就截然不同,是在同一个解决方案有两个工程(WinForm与Web)             * 到底是用于判断启动是Winform还是web             * 一、判断是启动Winform读取是 --->>>//E:\\ASP.NET\\MyApp\\MyApp\\bin\\Debug\\MyApp.vshost.exe.config             * 二、判断是启动Web读取到的路径是----->>>E:\\ASP.NET\\MyApp\\WebApp\\web.config             * 三、从而可以用String index=Path3.Substring(config.Length - 8);截取后面字符串判去判断,最好把都转换成小写或者大写             *     index.ToUpper()="E.CONFIG"   /   index.ToLower()=="e.config"             */            string Path3 = AppDomain.CurrentDomain.SetupInformation.ConfigurationFile;                   }   ///////////////////////////////////////////////////////////////////获取电脑环境信息////////////////////////////////////////////////////////////////        /// <summary>        /// 获取电脑环境相应的信息        /// new FileInfo(fileName).Length 获取当前文件的大小        /// </summary>        /// <param name="sender"></param>        /// <param name="e"></param>        private void btnComputer_Click(object sender, EventArgs e)        {             txtComputerName.Text = ComputerEnvirHelper.GetInstance().GetComputerName();            txtCompName.Text = ComputerEnvirHelper.GetInstance().GetSystemUserName();            txtAdmin.Text = ComputerEnvirHelper.GetInstance().GetComputerUserName();             txtDiskNum.Text = ComputerEnvirHelper.GetInstance().GetDiskNumber();             txtDriverInfo.Text = ComputerEnvirHelper.GetInstance().GetDriveInfo();             //txtPhysicalMemory.Text = ComputerEnvirHelper.GetTotalPhysicalMemory1("SELECT * FROM Win32_PhysicalMemory");            txtPhysicalMemory.Text = ComputerEnvirHelper.GetInstance().GetTotalPhysicalMemory2();             txtMemory.Text = ComputerEnvirHelper.GetInstance().GetProcessPhysicalMemory();             txtSysTpye.Text = ComputerEnvirHelper.GetInstance().GetSystemType();             txtCUP_ID.Text = ComputerEnvirHelper.GetInstance().GetCpuID();            txtMacAddress.Text = ComputerEnvirHelper.GetInstance().GetMacAddress();            txtIpAddress.Text = ComputerEnvirHelper.GetInstance().GetIPAddress();            txtDriverID.Text = ComputerEnvirHelper.GetInstance().GetDiskID().ToString();             txtInAddress.Text = ComputerEnvirHelper.GetInstance().getClientLocalIPAddress();            string downloadIpAddress = "http://www.google.com/ip";            string providerIPAddres = "http://www.baidu.com/ipaddress";            txtOutIPAddress.Text = ComputerEnvirHelper.GetInstance().getClientInternetIPAddress(downloadIpAddress, providerIPAddres);        }         private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)        {         }           }} 




 

0 0