2323using System . Text . RegularExpressions ;
2424using System . Collections . Generic ;
2525using System . Globalization ;
26+ using System . Diagnostics ;
2627
2728namespace ORTS . Common
2829{
@@ -50,34 +51,55 @@ static SystemInfo()
5051 Version = runtime . Groups [ 2 ] . Value ,
5152 } ;
5253
53- // Almost nothing will correctly identify Windows 11 at this point, so we have to use WMI.
54- var operatingSystem = new ManagementClass ( "Win32_OperatingSystem" ) . GetInstances ( ) . Cast < ManagementObject > ( ) . First ( ) ;
55- OperatingSystem = new Platform
54+ try
5655 {
57- Name = ( string ) operatingSystem [ "Caption" ] ,
58- Version = ( string ) operatingSystem [ "Version" ] ,
59- Architecture = RuntimeInformation . OSArchitecture . ToString ( ) ,
60- Language = CultureInfo . CurrentUICulture . IetfLanguageTag ,
61- Languages = ( string [ ] ) operatingSystem [ "MUILanguages" ] ,
62- } ;
56+ // Almost nothing will correctly identify Windows 11 at this point, so we have to use WMI.
57+ var operatingSystem = new ManagementClass ( "Win32_OperatingSystem" ) . GetInstances ( ) . Cast < ManagementObject > ( ) . First ( ) ;
58+ OperatingSystem = new Platform
59+ {
60+ Name = ( string ) operatingSystem [ "Caption" ] ,
61+ Version = ( string ) operatingSystem [ "Version" ] ,
62+ Architecture = RuntimeInformation . OSArchitecture . ToString ( ) ,
63+ Language = CultureInfo . CurrentUICulture . IetfLanguageTag ,
64+ Languages = ( string [ ] ) operatingSystem [ "MUILanguages" ] ,
65+ } ;
66+ }
67+ catch ( ManagementException error )
68+ {
69+ Trace . WriteLine ( error ) ;
70+ }
6371
6472 NativeMethods . GlobalMemoryStatusEx ( MemoryStatusExtended ) ;
6573 InstalledMemoryMB = ( int ) ( MemoryStatusExtended . TotalPhysical / 1024 / 1024 ) ;
6674
67- CPUs = new ManagementClass ( "Win32_Processor" ) . GetInstances ( ) . Cast < ManagementObject > ( ) . Select ( processor => new CPU
75+ try
6876 {
69- Name = ( string ) processor [ "Name" ] ,
70- Manufacturer = ( string ) processor [ "Manufacturer" ] ,
71- ThreadCount = ( uint ) processor [ "ThreadCount" ] ,
72- MaxClockMHz = ( uint ) processor [ "MaxClockSpeed" ] ,
73- } ) . ToList ( ) ;
77+ CPUs = new ManagementClass ( "Win32_Processor" ) . GetInstances ( ) . Cast < ManagementObject > ( ) . Select ( processor => new CPU
78+ {
79+ Name = ( string ) processor [ "Name" ] ,
80+ Manufacturer = ( string ) processor [ "Manufacturer" ] ,
81+ ThreadCount = ( uint ) processor [ "ThreadCount" ] ,
82+ MaxClockMHz = ( uint ) processor [ "MaxClockSpeed" ] ,
83+ } ) . ToList ( ) ;
84+ }
85+ catch ( ManagementException error )
86+ {
87+ Trace . WriteLine ( error ) ;
88+ }
7489
75- GPUs = new ManagementClass ( "Win32_VideoController" ) . GetInstances ( ) . Cast < ManagementObject > ( ) . Select ( adapter => new GPU
90+ try
91+ {
92+ GPUs = new ManagementClass ( "Win32_VideoController" ) . GetInstances ( ) . Cast < ManagementObject > ( ) . Select ( adapter => new GPU
93+ {
94+ Name = ( string ) adapter [ "Name" ] ,
95+ Manufacturer = ( string ) adapter [ "AdapterCompatibility" ] ,
96+ MemoryMB = ( uint ? ) adapter [ "AdapterRAM" ] / 1024 / 1024 ?? 0 ,
97+ } ) . ToList ( ) ;
98+ }
99+ catch ( ManagementException error )
76100 {
77- Name = ( string ) adapter [ "Name" ] ,
78- Manufacturer = ( string ) adapter [ "AdapterCompatibility" ] ,
79- MemoryMB = ( uint ) adapter [ "AdapterRAM" ] / 1024 / 1024 ,
80- } ) . ToList ( ) ;
101+ Trace . WriteLine ( error ) ;
102+ }
81103
82104 var featureLevels = new uint [ ] {
83105 NativeMethods . D3D_FEATURE_LEVEL_12_2 ,
@@ -108,8 +130,8 @@ static SystemInfo()
108130 public static readonly Platform Runtime ;
109131 public static readonly Platform OperatingSystem ;
110132 public static readonly int InstalledMemoryMB ;
111- public static readonly List < CPU > CPUs ;
112- public static readonly List < GPU > GPUs ;
133+ public static readonly List < CPU > CPUs = new List < CPU > ( ) ;
134+ public static readonly List < GPU > GPUs = new List < GPU > ( ) ;
113135 public static readonly List < string > Direct3DFeatureLevels = new List < string > ( ) ;
114136
115137 public static void WriteSystemDetails ( TextWriter output )
@@ -118,7 +140,7 @@ public static void WriteSystemDetails(TextWriter output)
118140 DateTime . Now , DateTime . UtcNow ) ;
119141 output . WriteLine ( "Application = {0} {1} ({2})" , Application . Name , Application . Version , Application . Architecture ) ;
120142 output . WriteLine ( "Runtime = {0} {1}" , Runtime . Name , Runtime . Version ) ;
121- output . WriteLine ( "System = {0} {1} ({2}; {3}; {4})" , OperatingSystem . Name , OperatingSystem . Version , OperatingSystem . Architecture , OperatingSystem . Language , string . Join ( "," , OperatingSystem . Languages ) ) ;
143+ output . WriteLine ( "System = {0} {1} ({2}; {3}; {4})" , OperatingSystem . Name , OperatingSystem . Version , OperatingSystem . Architecture , OperatingSystem . Language , string . Join ( "," , OperatingSystem . Languages ?? new string [ 0 ] ) ) ;
122144 output . WriteLine ( "Memory = {0:N0} MB" , InstalledMemoryMB ) ;
123145 foreach ( var cpu in CPUs ) output . WriteLine ( "CPU = {0} ({1}; {2} threads; {3:N0} MHz)" , cpu . Name , cpu . Manufacturer , cpu . ThreadCount , cpu . MaxClockMHz ) ;
124146 foreach ( var gpu in GPUs ) output . WriteLine ( "GPU = {0} ({1}; {2:N0} MB)" , gpu . Name , gpu . Manufacturer , gpu . MemoryMB ) ;
0 commit comments