`
jilong-liang
  • 浏览: 471147 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类

C# 32Bit电脑环境帮助类

    博客分类:
  • C #
C# 
阅读更多

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:梁继龙

    /// @Date2012/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; //单位:

        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>

        /// 获取CPUID

        /// </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:ApplicationAppDomain应用

             * 

             * 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这个就截然不同,是在同一个解决方案有两个工程(WinFormWeb

             * 到底是用于判断启动是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)

        {

 

        }

       

    }

}

 



 

 



 

 

  • 大小: 65.3 KB
  • 大小: 119.8 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics