C# 32Bit电脑环境帮助类

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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱学习的蹭蹭

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值