//************************************************************************ // author: yuzhengyang // date: 2017.3.29 - 2017.7.13 // desc: 计算机信息 // Copyright (c) yuzhengyang. All rights reserved. //************************************************************************ using System; using System.Collections.Generic; using System.IO; using System.Management; using System.Runtime.InteropServices; namespace Azylee.Core.WindowsUtils.InfoUtils { /// /// 计算机信息 /// public static class ComputerInfoTool { const string UNKNOW = "unknow"; /// /// CPU 信息 /// 【序列号、型号】 /// /// public static Tuple CpuInfo() { try { Tuple result = null; ManagementObjectSearcher searcher = new ManagementObjectSearcher("select * from Win32_Processor"); foreach (ManagementObject item in searcher.Get()) { result = new Tuple( item["ProcessorId"].ToString().Trim(), item["Name"].ToString().Trim()); break; } return result; } catch (Exception e) { return null; } } /// /// 网卡信息 /// 【名称、描述、物理地址(Mac)、Ip地址、网关地址】 /// /// public static List> NetworkCardInfo() { return NetCardInfoTool.GetNetworkCardInfo(); } /// /// 显卡型号 /// 【型号、RAM】 /// /// public static List> GraphicsCardInfo() { try { List> rs = new List>(); ManagementObjectSearcher searcher = new ManagementObjectSearcher("select * from Win32_VideoController"); foreach (ManagementObject item in searcher.Get()) { string name = item["Name"].ToString().Trim(); string ram = item["AdapterRAM"].ToString().Trim(); ulong ramnumber; ulong.TryParse(ram, out ramnumber); rs.Add(new Tuple(name, ramnumber)); } return rs; } catch { return null; } } /// /// 声卡型号 /// /// public static List SoundCardModel() { try { List rs = new List(); ManagementObjectSearcher searcher = new ManagementObjectSearcher("select * from Win32_SoundDevice"); foreach (ManagementObject item in searcher.Get()) { rs.Add(item["Name"].ToString().Trim()); } return rs; } catch { return null; } } /// /// 内存型号 /// /// public static List RAMModel() { List rs = new List(); try { ManagementClass mc = new ManagementClass("Win32_PhysicalMemory"); ManagementObjectCollection moc = mc.GetInstances(); foreach (ManagementObject mo in moc) { //string temp = ""; //foreach (PropertyData m in mo.Properties) //{ // try // { // temp += m.Name.ToString() + " : " + m.Value.ToString() + "&&&&"; // } // catch { } //} //rs.Add(temp); try { rs.Add(mo["Manufacturer"].ToString().Trim() + " " + mo["PartNumber"].ToString().Trim()); } catch { } } } catch (Exception ex) { } return rs; } /// /// 物理内存(单位:KB) /// /// public static ulong TotalPhysicalMemory() { ulong size = 0; try { ManagementClass mc = new ManagementClass("Win32_ComputerSystem"); ManagementObjectCollection moc = mc.GetInstances(); foreach (ManagementObject mo in moc) { ulong.TryParse(mo["TotalPhysicalMemory"].ToString(), out size); break; } } catch { } if (size > 1024) size = size / 1024; return size; } /// /// 可用物理内存(单位:KB) /// /// public static ulong AvailablePhysicalMemory() { ulong size = 0; try { ManagementClass mc = new ManagementClass("Win32_OperatingSystem"); ManagementObjectCollection moc = mc.GetInstances(); foreach (ManagementObject mo in moc) { ulong.TryParse(mo["FreePhysicalMemory"].ToString(), out size); break; } } catch { } return size; } /// /// 硬盘信息 /// 【序列号、型号】 /// /// public static List> HardDiskInfo() { List> result = new List>(); try { ManagementClass mc = new ManagementClass("Win32_DiskDrive"); ManagementObjectCollection moc = mc.GetInstances(); foreach (ManagementObject mo in moc) { result.Add(new Tuple( mo.Properties["SerialNumber"].Value.ToString().Trim(), mo.Properties["Model"].Value.ToString().Trim())); } return result; } catch (Exception e) { return result; } } /// /// 计算机名 /// /// public static string MachineName() { try { return Environment.MachineName; } catch { return UNKNOW; } } /// /// 主板信息 /// 【制造商、型号、序列号】 /// /// public static Tuple BoardInfo() { try { Tuple result = null; ManagementObjectSearcher MySearcher = new ManagementObjectSearcher("SELECT * FROM Win32_BaseBoard"); foreach (ManagementObject MyObject in MySearcher.Get()) { result = new Tuple( MyObject["Manufacturer"].ToString().Trim(), MyObject["Product"].ToString().Trim(), MyObject["SerialNumber"].ToString().Trim()); break; } return result; } catch (Exception e) { return null; } } /// /// 操作系统信息 /// 【系统名称、系统路劲、安装时间】 /// /// public static Tuple OsInfo() { try { Tuple result = null; ManagementObjectSearcher MySearcher = new ManagementObjectSearcher("SELECT * FROM Win32_OperatingSystem"); foreach (ManagementObject MyObject in MySearcher.Get()) { string caption = MyObject["Caption"].ToString().Trim(); string windowsdirectory = MyObject["WindowsDirectory"].ToString().Trim(); string installdate = MyObject["InstallDate"].ToString().Trim(); DateTime dtinstalldate = DateTime.Parse("2001-10-25");//设置初始值为WindowsXP发布日期 if (installdate.Length >= 14) { installdate = installdate.Substring(0, 14); installdate = installdate.Insert(12, ":"); installdate = installdate.Insert(10, ":"); installdate = installdate.Insert(8, " "); installdate = installdate.Insert(6, "-"); installdate = installdate.Insert(4, "-"); DateTime.TryParse(installdate, out dtinstalldate); } if (dtinstalldate.Year < 2001) dtinstalldate = DateTime.Parse("2001-10-25"); result = new Tuple( caption, windowsdirectory, dtinstalldate); break; } return result; } catch (Exception e) { return null; } } /// /// 系统类型 /// /// public static string SystemType() { try { string result = ""; ManagementClass mc = new ManagementClass("Win32_ComputerSystem"); ManagementObjectCollection moc = mc.GetInstances(); foreach (ManagementObject mo in moc) { result = mo["SystemType"].ToString(); } return result; } catch { return UNKNOW; } } /// /// 当前用户名 /// /// public static string UserName() { return Environment.UserName; } /// /// 当前用户名 /// /// public static string UserName2() { try { string result = ""; ManagementClass mc = new ManagementClass("Win32_ComputerSystem"); ManagementObjectCollection moc = mc.GetInstances(); foreach (ManagementObject mo in moc) { result = mo["UserName"].ToString(); } return result; } catch { return UNKNOW; } } #region 获取所有用户名 /// /// 所有用户名称 /// /// public static List UserNames() { List temp = new List(); try { IntPtr bufPtr; NetUserEnum(null, 0, 2, out bufPtr, -1, out int EntriesRead, out int TotalEntries, out int Resume); if (EntriesRead > 0) { USER_INFO_0[] Users = new USER_INFO_0[EntriesRead]; IntPtr iter = bufPtr; for (int i = 0; i < EntriesRead; i++) { Users[i] = (USER_INFO_0)Marshal.PtrToStructure(iter, typeof(USER_INFO_0)); iter = (IntPtr)((long)iter + Marshal.SizeOf(typeof(USER_INFO_0))); temp.Add(Users[i].Username); } NetApiBufferFree(bufPtr); } } catch { } return temp; } [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)] private struct USER_INFO_0 { public string Username; } [DllImport("Netapi32.dll ")] extern static int NetUserEnum([MarshalAs(UnmanagedType.LPWStr)] string servername, int level, int filter, out IntPtr bufptr, int prefmaxlen, out int entriesread, out int totalentries, out int resume_handle); [DllImport("Netapi32.dll ")] extern static int NetApiBufferFree(IntPtr Buffer); #endregion /// /// 域名 /// /// public static string UserDomainName() { try { return Environment.UserDomainName; } catch { return UNKNOW; } } /// /// 系统启动后的毫秒数 /// /// public static int TickCount() { return Environment.TickCount; } /// /// 获取机器开机时间 /// /// public static DateTime StartTime() { DateTime time = DateTime.Now; try { time = time.AddMilliseconds(-Environment.TickCount); } catch { } return time; } /// /// 处理器数 /// /// public static int ProcessorCount() { return Environment.ProcessorCount; } /// /// 平台标识和版本号 /// /// public static string OSVersion() { try { return Environment.OSVersion.ToString(); } catch { return UNKNOW; } } /// /// 64位操作系统 /// /// public static bool Is64BitOperatingSystem() { return Environment.Is64BitOperatingSystem; } /// /// 获取系统盘总容量(单位:KB) /// /// public static long GetSystemDriveTotalSize() { try { DriveInfo Drive = new DriveInfo("C");//系统盘驱动器 var osinfo = OsInfo(); if (osinfo != null) { string drive = osinfo.Item2.Substring(0, 1); Drive = new DriveInfo(drive); } return Drive.TotalSize / 1024; } catch { } return 0; } /// /// 获取系统盘可用容量(单位:KB) /// /// public static long GetSystemDriveAvailableSize() { long size = 0; try { var osinfo = OsInfo(); if (osinfo != null) { string drive = osinfo.Item2.Substring(0, 1); DriveInfo Drive = new DriveInfo(drive); size = Drive.TotalFreeSpace / 1024; } } catch { } return size; } /// /// 获取磁盘上次格式化时间 /// /// /// public static DateTime GetLastFormatTime(string dstr) { DateTime result = DateTime.Now; string volInfo = dstr + "System Volume Information"; if (Directory.Exists(volInfo)) { try { DirectoryInfo di = new DirectoryInfo(volInfo); result = di.CreationTime; } catch (Exception e) { } } return result; } } }