aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Ryujinx.Common/SystemInfo/WindowsSystemInfo.cs31
1 files changed, 27 insertions, 4 deletions
diff --git a/Ryujinx.Common/SystemInfo/WindowsSystemInfo.cs b/Ryujinx.Common/SystemInfo/WindowsSystemInfo.cs
index 1d4e61fa..6bbed215 100644
--- a/Ryujinx.Common/SystemInfo/WindowsSystemInfo.cs
+++ b/Ryujinx.Common/SystemInfo/WindowsSystemInfo.cs
@@ -1,4 +1,7 @@
+using Ryujinx.Common.Logging;
+using System;
using System.Management;
+using System.Runtime.InteropServices;
namespace Ryujinx.Common.SystemInfo
{
@@ -9,14 +12,34 @@ namespace Ryujinx.Common.SystemInfo
public WindowsSysteminfo()
{
- foreach (ManagementBaseObject mObject in new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM Win32_Processor").Get())
+ bool wmiNotAvailable = false;
+
+ try
+ {
+ 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 = ulong.Parse(mObject["TotalVisibleMemorySize"].ToString()) * 1024;
+ }
+ }
+ catch (PlatformNotSupportedException)
{
- CpuName = mObject["Name"].ToString();
+ wmiNotAvailable = true;
+ }
+ catch (COMException)
+ {
+ wmiNotAvailable = true;
}
- foreach (ManagementBaseObject mObject in new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM Win32_OperatingSystem").Get())
+ if (wmiNotAvailable)
{
- RamSize = ulong.Parse(mObject["TotalVisibleMemorySize"].ToString()) * 1024;
+ Logger.PrintError(LogClass.Application, "WMI isn't available, system informations will use default values.");
+
+ CpuName = "Unknown";
}
}
}