//************************************************************************
// https://github.com/yuzhengyang
// author: yuzhengyang
// date: 2017.3.29 - 2017.7.12
// desc: 计算机信息
// Copyright (c) yuzhengyang. All rights reserved.
//************************************************************************
using System;
using System.Collections.Generic;
using System.Management;
using System.Net.NetworkInformation;
using System.Runtime.InteropServices;
namespace Y.Utils.WindowsUtils.InfoUtils
{
///
/// 计算机信息
///
public static class ComputerInfoTool
{
const string UNKNOW = "unknow";
///
/// CPU 序列号
///
///
public static string CPUID()
{
ManagementClass mc = null;
ManagementObjectCollection moc = null;
string ProcessorId = "";
try
{
mc = new ManagementClass("Win32_Processor");
moc = mc.GetInstances();
foreach (ManagementObject mo in moc)
{
ProcessorId = mo.Properties["ProcessorId"].Value.ToString();
}
return ProcessorId;
}
catch (Exception e)
{
return UNKNOW;
}
finally
{
if (moc != null) moc.Dispose();
if (mc != null) mc.Dispose();
}
}
///
/// CPU 型号
///
///
public static string CPUModel()
{
try
{
string result = "";
ManagementObjectSearcher searcher = new ManagementObjectSearcher("select * from Win32_Processor");
foreach (ManagementObject item in searcher.Get())
{
result = item["Name"].ToString();
}
return result;
}
catch
{ return UNKNOW; }
}
///
/// 显卡型号
///
///
public static List GraphicsCardModel()
{
try
{
List rs = new List();
ManagementObjectSearcher searcher = new ManagementObjectSearcher("select * from Win32_VideoController");
foreach (ManagementObject item in searcher.Get())
{
rs.Add(item["Name"].ToString());
}
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());
}
return rs;
}
catch
{ return null; }
}
///
/// 物理内存
///
///
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);
}
}
catch { }
return size;
}
///
/// 可用物理内存
///
///
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);
}
}
catch { }
return size;
}
///
/// 硬盘型号
///
///
public static List HardDiskModel()
{
try
{
List rs = new List();
ManagementClass mc = new ManagementClass("Win32_DiskDrive");
ManagementObjectCollection moc = mc.GetInstances();
foreach (ManagementObject mo in moc)
{
rs.Add(mo.Properties["Model"].Value.ToString() + "--" + mo.Properties["SerialNumber"].Value.ToString());
//result = (string);
//if (!result.ToLower().Contains("usb"))
// return result;
}
return rs;
}
catch { return null; }
}
#region 获取硬盘ID
public static string GetHDiskID(string hdModel)
{
try
{
string result = "";
ManagementClass mc = new ManagementClass("Win32_DiskDrive");
ManagementObjectCollection moc = mc.GetInstances();
foreach (ManagementObject mo in moc)
{
if (mo.Properties["Model"].Value.ToString().Contains(hdModel))
{
result = (string)mo.Properties["SerialNumber"].Value;
}
}
return result.Trim();
}
catch
{ return UNKNOW; }
}
#endregion
#region 获取操作系统
public static string GetOS()
{
try
{
string result = "";
ManagementObjectSearcher MySearcher = new ManagementObjectSearcher("SELECT * FROM Win32_OperatingSystem");
foreach (ManagementObject MyObject in MySearcher.Get())
{
result = MyObject["Caption"].ToString();
}
return result;
}
catch
{ return UNKNOW; }
}
#endregion
#region 获取系统类型
public static string GetSystemType()
{
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; }
}
#endregion
#region 获取系统安装日期
public static string GetSystemInstallDate()
{
try
{
string result = "";
ManagementObjectSearcher MySearcher = new ManagementObjectSearcher("SELECT * FROM Win32_OperatingSystem");
foreach (ManagementObject MyObject in MySearcher.Get())
{
result = MyObject["InstallDate"].ToString().Substring(0, 14);
result = result.Insert(12, ":");
result = result.Insert(10, ":");
result = result.Insert(8, " ");
result = result.Insert(6, "-");
result = result.Insert(4, "-");
}
return result;
}
catch
{ return UNKNOW; }
}
#endregion
#region 获取登陆用户名
public static string GetLoginUserName()
{
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; }
}
#endregion
#region 获取计算机名
public static string GetComputerName()
{
try
{
string result = "";
result = System.Environment.GetEnvironmentVariable("ComputerName");
return result;
}
catch
{ return UNKNOW; }
}
#endregion
#region 获取所有用户名
public static List GetSysUserNames()
{
int EntriesRead;
int TotalEntries;
int Resume;
IntPtr bufPtr;
List temp = new List();
NetUserEnum(null, 0, 2, out bufPtr, -1, out EntriesRead, out TotalEntries, out 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);
}
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
#region 获取主板制造商
public static string GetBoardManufacturer()
{
try
{
string result = "";
ManagementObjectSearcher MySearcher = new ManagementObjectSearcher("SELECT * FROM Win32_BaseBoard");
foreach (ManagementObject MyObject in MySearcher.Get())
{
result = MyObject["Manufacturer"].ToString();
}
return result;
}
catch
{ return UNKNOW; }
}
#endregion
#region 获取主板型号
public static string GetBoardProduct()
{
try
{
string result = "";
ManagementObjectSearcher MySearcher = new ManagementObjectSearcher("SELECT * FROM Win32_BaseBoard");
foreach (ManagementObject MyObject in MySearcher.Get())
{
result = MyObject["Product"].ToString();
}
return result;
}
catch
{ return UNKNOW; }
}
#endregion
#region 获取主板序列号
public static string GetBoardSerialNumber()
{
try
{
string result = "";
ManagementObjectSearcher MySearcher = new ManagementObjectSearcher("SELECT * FROM Win32_BaseBoard");
foreach (ManagementObject MyObject in MySearcher.Get())
{
result = MyObject["SerialNumber"].ToString();
}
return result;
}
catch
{ return UNKNOW; }
}
#endregion
}
}