//************************************************************************
// 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 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;
}
///
/// 获取计算机共享文件
///
///
public static List Share()
{
List rs = new List();
try
{
ManagementObjectSearcher searcher = new ManagementObjectSearcher("select * from win32_share");
foreach (ManagementObject share in searcher.Get())
{
try
{
string name = share["Name"].ToString();
string path = share["Path"].ToString();
rs.Add(name + "->" + path);
}
catch { }
}
}
catch { }
return rs;
}
}
}