Files
better-genshin-impact/BetterGenshinImpact/Helpers/Device/GetPCInfo.cs
辉鸭蛋 3ed01a5d46 pc info
2024-12-26 01:10:21 +08:00

351 lines
9.6 KiB
C#

using System;
using System.Collections.Generic;
using System.Management;
using Newtonsoft.Json;
namespace BetterGenshinImpact.Helpers.Device;
static class GetPCInfo
{
public static string GetJson()
{
var PCInfo = GetClass();
return JsonConvert.SerializeObject(PCInfo);
}
public static PCInfo GetClass()
{
var PCInfo = new PCInfo()
{
CPU = GetCPUs(),
= Get主板s(),
= Get内存s(),
= Get打印机s(),
= Get显卡s(),
= Get磁盘s(),
= Get系统s(),
= Get网卡s(),
= new ()
{
= Get计算机类型(),
= IsLaptop(),
= IsPluggedIn()
}
};
return PCInfo;
}
public static CPU[] GetCPUs()
{
var cpus = new List<CPU>();
try
{
var mc = new ManagementObjectSearcher("SELECT * FROM Win32_Processor");
var moc = mc.Get();
foreach (ManagementObject mo in moc)
{
var cpu = new CPU
{
CPU名称 = mo["Caption"].ToString(),
CPU序列号 = mo["ProcessorID"].ToString(),
ID = mo["DeviceID"].ToString(),
= mo["Name"].ToString(),
= mo["CpuStatus"].ToString(),
CPU级别 = mo["Level"].ToString(),
= mo["SystemName"].ToString(),
= mo["ProcessorType"].ToString()
};
cpus.Add(cpu);
}
moc = null;
mc = null;
}
catch
{
}
return cpus.ToArray();
}
public static [] Get主板s()
{
var s = new List<>();
try
{
var mc = new ManagementObjectSearcher("SELECT * FROM Win32_BaseBoard");
var moc = mc.Get();
foreach (ManagementObject mo in moc)
{
var = new
{
ID = mo["SerialNumber"].ToString(),
= mo["Manufacturer"].ToString(),
= mo["Product"].ToString(),
= mo["Version"].ToString()
};
s.Add();
}
moc = null;
mc = null;
}
catch
{
}
return s.ToArray();
}
public static [] Get内存s()
{
var s = new List<>();
try
{
var mc = new ManagementObjectSearcher("SELECT * FROM Win32_PhysicalMemory");
var moc = mc.Get();
foreach (ManagementObject mo in moc)
{
var = new
{
= mo["DeviceLocator"].ToString(),
= mo["Caption"].ToString(),
= mo["PartNumber"].ToString(),
= long.Parse(mo["Capacity"].ToString()) / 1073741824 + "GB",
= mo["SerialNumber"].ToString(),
= mo["Tag"].ToString(),
= mo["Speed"].ToString()
};
s.Add();
}
moc = null;
mc = null;
}
catch (Exception)
{
}
return s.ToArray();
}
public static [] Get网卡s()
{
var s = new List<>();
try
{
var mc = new ManagementObjectSearcher("SELECT * FROM Win32_NetworkAdapterConfiguration Where IPEnabled=TRUE");
var moc = mc.Get();
foreach (ManagementObject mo in moc)
{
var = new
{
IP地址 = ((String[])mo["IPAddress"])[0],
MAC地址 = mo["MACAddress"].ToString(),
= mo["Caption"].ToString()
};
s.Add();
}
moc = null;
mc = null;
}
catch
{
}
return s.ToArray();
}
public static [] Get系统s()
{
var s = new List<>();
try
{
var mc = new ManagementObjectSearcher("SELECT * FROM Win32_OperatingSystem");
var moc = mc.Get();
foreach (ManagementObject mo in moc)
{
var = new
{
= mo["BootDevice"].ToString(),
= mo["InstallDate"].ToString(),
= mo["SerialNumber"].ToString(),
= mo["OSArchitecture"].ToString(),
= mo["Caption"].ToString(),
= mo["Version"].ToString(),
= mo["SystemDrive"].ToString(),
= mo["SystemDirectory"].ToString(),
= mo["SystemDevice"].ToString(),
= mo["CSName"].ToString()
};
s.Add();
}
moc = null;
mc = null;
}
catch
{
}
return s.ToArray();
}
public static [] Get磁盘s()
{
var s = new List<>();
try
{
var mc = new ManagementObjectSearcher("SELECT * FROM Win32_DiskDrive");
var moc = mc.Get();
foreach (ManagementObject mo in moc)
{
var = new
{
= mo["Model"].ToString(),
= long.Parse(mo["Size"].ToString()) / 1073741824 + "GB",
= mo["SerialNumber"].ToString(),
= mo["InterfaceType"].ToString(),
ID = mo["DeviceID"].ToString(),
= mo["Caption"].ToString()
};
s.Add();
}
moc = null;
mc = null;
}
catch
{
}
return s.ToArray();
}
public static [] Get打印机s()
{
var s = new List<>();
try
{
var mc = new ManagementObjectSearcher("SELECT * FROM Win32_Printer");
var moc = mc.Get();
foreach (ManagementObject mo in moc)
{
var = new
{
使 = mo["PortName"].ToString(),
ID = mo["DeviceID"].ToString(),
= mo["Caption"].ToString(),
= mo["DriverName"].ToString()
};
s.Add();
}
moc = null;
mc = null;
}
catch
{
}
return s.ToArray();
}
public static [] Get显卡s()
{
var s = new List<>();
try
{
var mc = new ManagementObjectSearcher("SELECT * FROM Win32_VideoController");
var moc = mc.Get();
foreach (ManagementObject mo in moc)
{
var = new
{
= mo["VideoModeDescription"].ToString(),
= long.Parse(mo["AdapterRAM"].ToString()) / 1048576 + "MB",
ID = mo["PNPDeviceID"].ToString(),
= mo["Caption"].ToString()
};
s.Add();
}
moc = null;
mc = null;
}
catch
{
}
return s.ToArray();
}
static List<string> Get计算机类型()
{
List<string> types = new();
// Use WMI to query the ChassisTypes
var searcher = new ManagementObjectSearcher("SELECT * FROM Win32_SystemEnclosure");
foreach (ManagementObject queryObj in searcher.Get())
{
foreach (int type in (UInt16[])queryObj["ChassisTypes"])
{
types.Add(type.ToString());
}
}
return types;
}
static bool IsLaptop()
{
// Use WMI to query the ChassisTypes
var searcher = new ManagementObjectSearcher("SELECT * FROM Win32_SystemEnclosure");
foreach (ManagementObject queryObj in searcher.Get())
{
foreach (int type in (UInt16[])queryObj["ChassisTypes"])
{
// 8 and 9 represent portable and laptop, respectively
if (type == 8 || type == 9 || type == 10 || type == 14 || type == 30)
{
return true;
}
}
}
return false;
}
static bool IsPluggedIn()
{
// Use WMI to query the power status
var searcher = new ManagementObjectSearcher("SELECT * FROM Win32_Battery");
foreach (ManagementObject queryObj in searcher.Get())
{
// BatteryStatus 2 means the laptop is plugged in
if ((UInt16)queryObj["BatteryStatus"] == 2)
{
return true;
}
}
return false;
}
}