| 1234567891011121314151617181920212223242526272829303132333435363738394041 |
- using System;
- using System.IO;
- using System.Linq;
- using System.Management;
- using System.Runtime.InteropServices;
- namespace Ryujinx.Common
- {
- public static class SystemInfo
- {
- public static string OsDescription { get; private set; }
- public static string CpuName { get; private set; }
- public static string RamSize { get; private set; }
- static SystemInfo()
- {
- OsDescription = $"{RuntimeInformation.OSDescription} ({RuntimeInformation.OSArchitecture})";
- CpuName = "Unknown";
- RamSize = "Unknown";
- if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
- {
- foreach (ManagementBaseObject mObject in new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM Win32_Processor").Get())
- {
- CpuName = mObject["Name"].ToString();
- }
- foreach (ManagementBaseObject mObject in new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM Win32_OperatingSystem").Get())
- {
- RamSize = $"{Math.Round(double.Parse(mObject["TotalVisibleMemorySize"].ToString()) / 1024, 0)} MB";
- }
- }
- else if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux))
- {
- CpuName = File.ReadAllLines("/proc/cpuinfo").Where(line => line.StartsWith("model name")).ToList()[0].Split(":")[1].Trim();
- RamSize = $"{Math.Round(double.Parse(File.ReadAllLines("/proc/meminfo")[0].Split(":")[1].Trim().Split(" ")[0]) / 1024, 0)} MB";
- }
- }
- }
- }
|