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)
{
}
}
}