⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sysinfo.cs

📁 报刊广告管理系统。CSharp编写
💻 CS
📖 第 1 页 / 共 2 页
字号:
using System;
using System.Net;
using System.Net.Sockets;
using System.Management;
using System.Runtime.InteropServices;
using System.Text;
using System.Web.UI;

namespace WWAM.SysInfo
{
	/// <summary>
	/// 硬件信息类
	/// </summary>
	public class HardWare
	{
		#region WEB服务器 / WinForm本机
		/// <summary>
		/// WEB服务器主机名
		/// WinForm本机IP地址
		/// </summary>
		public static string HostName
		{
			get
			{
				return(Dns.GetHostName());
			}
		}

		public static IPAddress IP
		{
			get
			{
				return Dns.Resolve(HostName).AddressList[0];
			}
		}
		/// <summary>
		///  WEB服务器IP地址
		///  WinForm本机IP地址
		/// </summary>
		public static string IPString
		{
			get
			{
				string ip="";
				IPAddress[] addressList = Dns.Resolve(HostName).AddressList;
				for(int i=0;i<addressList.Length;i++)
				{
					if(i>3)break;
					ip+=addressList[i].ToString();
				}
				return(ip);
			}
		}



		/// <summary>
		/// WEB服务器MAC地址 17位(xx:xx:xx:xx:xx:xx) 耗时0.02-0.04秒
		/// WinForm本机MAC地址
		/// </summary>
		public static string MAC
		{
			get
			{
				string mac="";
				ManagementClass mc;            
				mc=new ManagementClass("Win32_NetworkAdapterConfiguration");            
				ManagementObjectCollection moc=mc.GetInstances();            
				foreach(ManagementObject mo in moc)            
				{                
					if(mo["IPEnabled"].ToString()=="True")                    
						mac=mo["MacAddress"].ToString();                                
				}
				return(mac);

			}
		}

		#endregion

		#region Web客户端
		
		[DllImport("Iphlpapi.dll")]
		private static extern int SendARP(Int32 dest, Int32 host, ref Int64 mac, ref Int32 length);
		[DllImport("Ws2_32.dll")]
		private static extern Int32 inet_addr(string ip);

		public static string WebHostName(Page page)
		{
			return page.Request.UserHostName;
		}

		public static string WebClientIP(Page page)
		{
			return page.Request.UserHostAddress;
		}

		public static string WebClientMAC(Page page)
		{
			string IP = page.Request.UserHostAddress;
			Int32 ldest = inet_addr(IP);
			Int64 macinfo = new Int64();
			Int32 len = 6;
			try
			{
				SendARP(ldest,0,ref macinfo,ref len);
			}
			catch
			{
				return "NULL";
			}
			string strmac=Convert.ToString(macinfo,16);
			if(strmac.Length<12)
			{
				strmac = strmac.PadLeft(12,'0');
			}
			string macAddress;
			if(strmac!="0000"&&strmac.Length==12)
			{
				macAddress = strmac;
			}
			else
			{
				macAddress = "NULL";
			}
			return macAddress = macAddress.ToUpper();

		}
				
		#endregion

		#region WinFrom本机信息
		/// <summary>
		/// CPU序列号 16位 耗时1秒
		/// </summary>
		public static string CPU_Serial
		{
			get
			{
				return(GetWMIInfo("win32_Processor","ProcessorId"));
			}
		}

		/// <summary>
		/// CPU名称
		/// </summary>
		public static string CPU_Name
		{
			get
			{
				return(GetWMIInfo("win32_Processor","Name"));

			}
		}
		/// <summary>
		/// CPU最高频率 (单位:MHz)
		/// </summary>
		public static string CPU_MaxClockSpeed
		{
			get
			{
				return(GetWMIInfo("win32_Processor","MaxClockSpeed"));

			}
		}
		/// <summary>
		/// CPU当前频率 (单位:MHz)
		/// </summary>
		public static string CPU_CurrentClockSpeed
		{
			get
			{
				return(GetWMIInfo("win32_Processor","CurrentClockSpeed"));
			}
		}


		/// <summary>
		/// 硬盘序列号
		/// </summary>
		public static string HardDisk_Serial
		{
			get
			{
				HardDiskInfo hdd = AtapiDevice.GetHddInfo(0);
				return(hdd.SerialNumber);
			}
		}
		/// <summary>
		/// 硬盘型号
		/// </summary>
		public static string HardDisk_Moule
		{
			get
			{
				HardDiskInfo hdd = AtapiDevice.GetHddInfo(0);
				return(hdd.ModuleNumber);
			}

		}

		/// <summary>
		/// 硬盘固件版本
		/// </summary>
		public static string HardDisk_Firmware
		{
			get
			{
				HardDiskInfo hdd = AtapiDevice.GetHddInfo(0);
				return(hdd.Firmware);
			}
		}

		/// <summary>
		/// 硬盘容量 (单位 MB)
		/// </summary>
		public static uint HardDisk_Capacity
		{
			get
			{
				HardDiskInfo hdd = AtapiDevice.GetHddInfo(0);
				return(hdd.Capacity);
			}
		}


		/// <summary>
		/// 内存容量 (单位 MB)
		/// </summary>
		public static string Memory_Capacity
		{
			get
			{
				string s=GetWMIInfo("win32_PhysicalMemory","Capacity");
				int i = (Convert.ToInt32(s))/1024/1024;
				return(i.ToString());
			}
		}

		#endregion

		#region WMI对象属性信息获取
		private static string GetWMIInfo(string wmiClassName, string wmiObejctName)
		{
			string restr="";
			ManagementClass mc = new ManagementClass(wmiClassName);
			ManagementObjectCollection moc = mc.GetInstances();
			try
			{
				foreach(ManagementObject m in moc)
				{
					restr = m[wmiObejctName].ToString();
				}
			}
			catch
			{
				restr="Error Information!";
			}
			return(restr);
		}
		#endregion

		#region HardDiskInfo 参照代码 (调用API)
		/// <summary>
		/// 硬盘信息
		/// </summary>
		[Serializable]
			private struct HardDiskInfo
		{
			/// <summary>
			/// 型号
			/// </summary>
			public string ModuleNumber;
			/// <summary>
			/// 固件版本
			/// </summary>
			public string Firmware;
			/// <summary>
			/// 序列号
			/// </summary>
			public string SerialNumber;
			/// <summary>
			/// 容量,以M为单位
			/// </summary>
			public uint Capacity;
		}
		#region Internal Structs

		[StructLayout(LayoutKind.Sequential, Pack=1)]
			internal struct GetVersionOutParams
		{
			public byte bVersion;
			public byte bRevision;
			public byte bReserved;
			public byte bIDEDeviceMap;
			public uint fCapabilities;
			[MarshalAs(UnmanagedType.ByValArray, SizeConst=4)]
			public uint[] dwReserved; // For future use.
		}

		[StructLayout(LayoutKind.Sequential, Pack=1)]
			internal struct IdeRegs
		{
			public byte bFeaturesReg;
			public byte bSectorCountReg;
			public byte bSectorNumberReg;
			public byte bCylLowReg;
			public byte bCylHighReg;
			public byte bDriveHeadReg;
			public byte bCommandReg;
			public byte bReserved;
		}

		[StructLayout(LayoutKind.Sequential, Pack=1)]
			internal struct SendCmdInParams
		{
			public uint cBufferSize;
			public IdeRegs irDriveRegs;
			public byte bDriveNumber;
			[MarshalAs(UnmanagedType.ByValArray, SizeConst=3)]
			public byte[] bReserved;
			[MarshalAs(UnmanagedType.ByValArray, SizeConst=4)]
			public uint[] dwReserved;
			public byte bBuffer;
		}

		[StructLayout(LayoutKind.Sequential, Pack=1)]
			internal struct DriverStatus
		{
			public byte bDriverError;
			public byte bIDEStatus;
			[MarshalAs(UnmanagedType.ByValArray, SizeConst=2)]
			public byte[] bReserved;
			[MarshalAs(UnmanagedType.ByValArray, SizeConst=2)]
			public uint[] dwReserved;
		}

		[StructLayout(LayoutKind.Sequential, Pack=1)]
			internal struct SendCmdOutParams
		{
			public uint cBufferSize;
			public DriverStatus DriverStatus;
			public IdSector bBuffer;
		}

		[StructLayout(LayoutKind.Sequential, Pack=1, Size=512)]
			internal struct IdSector
		{
			public ushort wGenConfig;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -