In C#, we can get system information like Operation System , Processor Architecture and Drive Details using the built-in class Environment and we can also extract information through WMI service.
Get System Information using Environment
The below C# function get system information using Environment method.
public static void ShowSystemInformation()
{
StringBuilder systemInfo = new StringBuilder(string.Empty);
systemInfo.AppendFormat("Operation System: {0}n", Environment.OSVersion);
systemInfo.AppendFormat("Processor Architecture: {0}n", Environment.GetEnvironmentVariable("PROCESSOR_ARCHITECTURE"));
systemInfo.AppendFormat("Processor Model: {0}n", Environment.GetEnvironmentVariable("PROCESSOR_IDENTIFIER"));
systemInfo.AppendFormat("Processor Level: {0}n", Environment.GetEnvironmentVariable("PROCESSOR_LEVEL"));
systemInfo.AppendFormat("SystemDirectory: {0}n", Environment.SystemDirectory);
systemInfo.AppendFormat("ProcessorCount: {0}n", Environment.ProcessorCount);
systemInfo.AppendFormat("UserDomainName: {0}n", Environment.UserDomainName);
systemInfo.AppendFormat("UserName: {0}n", Environment.UserName);
//Drives
systemInfo.AppendFormat("LogicalDrives:n");
foreach (System.IO.DriveInfo DriveInfo1 in System.IO.DriveInfo.GetDrives())
{
try
{
systemInfo.AppendFormat("t Drive: {0}ntt VolumeLabel: " +
"{1}ntt DriveType: {2}ntt DriveFormat: {3}ntt " +
"TotalSize: {4}ntt AvailableFreeSpace: {5}n",
DriveInfo1.Name, DriveInfo1.VolumeLabel, DriveInfo1.DriveType,
DriveInfo1.DriveFormat, DriveInfo1.TotalSize, DriveInfo1.AvailableFreeSpace);
}
catch
{
}
}
systemInfo.AppendFormat("Version: {0}", Environment.Version);
Console.WriteLine(systemInfo);
Console.ReadKey();
}
Output:
Operation System: Microsoft Windows NT 6.1.7601 Service Pack 1 Processor Architecture: AMD64 Processor Model: Intel64 Family 6 Model 42 Stepping 7, GenuineIntel Processor Level: 6 SystemDirectory: C:Windowssystem32 ProcessorCount: 2 UserDomainName: TESTDomain UserName: Administrator LogicalDrives: Drive: C: VolumeLabel: DriveType: Fixed DriveFormat: NTFS TotalSize: 43240292352 AvailableFreeSpace: 10865721344 Drive: D: VolumeLabel: Local Disk DriveType: Fixed DriveFormat: NTFS TotalSize: 42183159808 AvailableFreeSpace: 12267360256 Drive: E: VolumeLabel: VBOXADDITIONS_4. DriveType: CDRom DriveFormat: CDFS TotalSize: 64770048 AvailableFreeSpace: 0 Drive: F: VolumeLabel: VBOX_Downloads DriveType: Network DriveFormat: VBoxSharedFolderFS TotalSize: 729626107904 AvailableFreeSpace: 371810705408 Version: 2.0.50727.5420
Get System Information using WMI class in C#
The below C# function get system information using WMI class. You need to add reference
public static void SystemInformation()
{
StringBuilder processorInfo = new StringBuilder(string.Empty);
ManagementClass mgmntClass = new ManagementClass("Win32_OperatingSystem");
ManagementObjectCollection mgmntObj = mgmntClass.GetInstances();
PropertyDataCollection properties = mgmntClass.Properties;
foreach (ManagementObject obj in mgmntObj)
{
foreach (PropertyData property in properties)
{
try
{
processorInfo.AppendLine(property.Name + ": " +
obj.Properties[property.Name].Value.ToString());
}
catch
{
}
}
processorInfo.AppendLine();
}
Console.WriteLine(processorInfo);
Console.ReadKey();
}
Output:
BootDevice: DeviceHarddiskVolume1 BuildNumber: 7601 BuildType: Multiprocessor Free Caption: Microsoft Windows Server 2008 R2 Enterprise CodeSet: 1252 CountryCode: 1 CreationClassName: Win32_OperatingSystem CSCreationClassName: Win32_ComputerSystem CSDVersion: Service Pack 1 CSName: DC1 CurrentTimeZone: 330 DataExecutionPrevention_32BitApplications: True DataExecutionPrevention_Available: True DataExecutionPrevention_Drivers: True DataExecutionPrevention_SupportPolicy: 3 Debug: False Description: Distributed: False EncryptionLevel: 256 ForegroundApplicationBoost: 2 FreePhysicalMemory: 284236 FreeSpaceInPagingFiles: 0 FreeVirtualMemory: 43384 InstallDate: 20140628143731.000000+330 LastBootUpTime: 20150826015035.016594+330 LocalDateTime: 20150827194243.001000+330 Locale: 0409 Manufacturer: Microsoft Corporation MaxNumberOfProcesses: 4294967295 MaxProcessMemorySize: 8589934464 MUILanguages: System.String[] Name: Microsoft Windows Server 2008 R2 Enterprise |C:Windows|DeviceHarddisk0Partition3 NumberOfLicensedUsers: 0 NumberOfProcesses: 83 NumberOfUsers: 4 OperatingSystemSKU: 10 Organization: OSArchitecture: 64-bit OSLanguage: 1033 OSProductSuite: 274 OSType: 18 Primary: True ProductType: 2 RegisteredUser: Windows User SerialNumber: 55041-507-1081103-84377 ServicePackMajorVersion: 1 ServicePackMinorVersion: 0 SizeStoredInPagingFiles: 0 Status: OK SuiteMask: 274 SystemDevice: DeviceHarddiskVolume3 SystemDirectory: C:Windowssystem32 SystemDrive: C: TotalVirtualMemorySize: 4093680 TotalVisibleMemorySize: 4095544 Version: 6.1.7601 WindowsDirectory: C:Windows
You can also get Processor and Drive information by using the WMI classes Win32_Processor and Win32_LogicalDisk.
Advertisement
Thanks for the code samples.
Unfortunately all backslashes are lost, so the strings like “{1}ntt DriveType: {2}ntt DriveFormat: {3}ntt ” are ill-formatted.