123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757 |
- using Microsoft.Win32;
- using System;
- using System.Collections.Generic;
- using System.Management;
- namespace Optimizer
- {
- public static class IndiciumHelper
- {
- public static List<Volume> Volumes = new List<Volume>();
- public static List<Volume> Opticals = new List<Volume>();
- public static List<Volume> Removables = new List<Volume>();
- public static List<NetworkDevice> PhysicalAdapters = new List<NetworkDevice>();
- public static List<NetworkDevice> VirtualAdapters = new List<NetworkDevice>();
- public static List<Keyboard> Keyboards = new List<Keyboard>();
- public static List<PointingDevice> PointingDevices = new List<PointingDevice>();
- public static List<CPU> GetCPUs()
- {
- List<CPU> CPUs = new List<CPU>();
- CPU cpu;
- try
- {
- ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_Processor");
- foreach (ManagementObject mo in searcher.Get())
- {
- cpu = new CPU();
- cpu.Name = Convert.ToString(mo.Properties["Name"].Value);
- cpu.L2CacheSize = ByteSize.FromKiloBytes(Convert.ToDouble(mo.Properties["L2CacheSize"].Value));
- cpu.L3CacheSize = ByteSize.FromKiloBytes(Convert.ToDouble(mo.Properties["L3CacheSize"].Value));
- cpu.Cores = Convert.ToUInt32(mo.Properties["NumberOfCores"].Value);
- // ThreadCount is for Windows 10+
- //cpu.Threads = Convert.ToUInt32(mo.Properties["ThreadCount"].Value);
- cpu.LogicalCpus = Convert.ToUInt32(mo.Properties["NumberOfLogicalProcessors"].Value);
- if (Utilities.CurrentWindowsVersion != WindowsVersion.Windows7)
- {
- bool temp = Convert.ToBoolean(mo.Properties["VirtualizationFirmwareEnabled"].Value);
- cpu.Virtualization = (temp) ? "Yes" : "No";
- }
- else
- {
- cpu.Virtualization = "-";
- }
- cpu.Stepping = Convert.ToString(mo.Properties["Description"].Value);
- cpu.Revision = Convert.ToString(mo.Properties["Revision"].Value);
- try
- {
- ManagementObjectSearcher searcher2 = new ManagementObjectSearcher("SELECT * FROM Win32_OperatingSystem");
- foreach (ManagementObject mo2 in searcher2.Get())
- {
- bool temp2 = Convert.ToBoolean(mo2.Properties["DataExecutionPrevention_Available"].Value);
- cpu.DataExecutionPrevention = (temp2) ? "Yes" : "No";
- }
- }
- catch
- {
- cpu.DataExecutionPrevention = "-";
- }
- if (string.IsNullOrEmpty(cpu.Name)) cpu.Name = GetCPUNameAlternative();
- CPUs.Add(cpu);
- }
- }
- catch (Exception ex)
- {
- Logger.LogError("IndiciumHelper.GetCPUs", ex.Message, ex.StackTrace);
- }
- return CPUs;
- }
- private static string GetCPUNameAlternative()
- {
- using (RegistryKey key = Registry.LocalMachine.OpenSubKey(@"HARDWARE\DESCRIPTION\System\CentralProcessor\0", false))
- {
- return key.GetValue("ProcessorNameString").ToString();
- }
- }
- public static VirtualMemory GetVM()
- {
- VirtualMemory vm = new VirtualMemory();
- try
- {
- ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_OperatingSystem");
- foreach (ManagementObject mo in searcher.Get())
- {
- vm.TotalVirtualMemory = ByteSize.FromKiloBytes(Convert.ToUInt64(mo.Properties["TotalVirtualMemorySize"].Value));
- vm.AvailableVirtualMemory = ByteSize.FromKiloBytes(Convert.ToUInt64(mo.Properties["FreeVirtualMemory"].Value));
- vm.UsedVirtualMemory = vm.TotalVirtualMemory.Subtract(vm.AvailableVirtualMemory);
- }
- }
- catch (Exception ex)
- {
- Logger.LogError("IndiciumHelper.GetVM", ex.Message, ex.StackTrace);
- }
- return vm;
- }
- public static List<RAM> GetRAM()
- {
- List<RAM> modules = new List<RAM>();
- RAM module;
- try
- {
- ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_PhysicalMemory");
- foreach (ManagementObject mo in searcher.Get())
- {
- module = new RAM();
- module.BankLabel = Convert.ToString(mo.Properties["BankLabel"].Value);
- module.Capacity = ByteSize.FromBytes(Convert.ToDouble(mo.Properties["Capacity"].Value));
- module.Manufacturer = Convert.ToString(mo.Properties["Manufacturer"].Value);
- module.Speed = Convert.ToUInt32(mo.Properties["Speed"].Value);
- UInt16 memorytype = Convert.ToUInt16(mo.Properties["MemoryType"].Value);
- UInt16 formfactor = Convert.ToUInt16(mo.Properties["FormFactor"].Value);
- module.MemoryType = SanitizeMemoryType(memorytype);
- module.FormFactor = SanitizeFormFactor(formfactor);
- modules.Add(module);
- }
- }
- catch (Exception ex)
- {
- Logger.LogError("IndiciumHelper.GetRAM", ex.Message, ex.StackTrace);
- }
- return modules;
- }
- public static List<Motherboard> GetMotherboards()
- {
- List<Motherboard> mobos = new List<Motherboard>();
- try
- {
- ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_BaseBoard");
- foreach (ManagementObject mo in searcher.Get())
- {
- Motherboard mobo = new Motherboard();
- mobo.Model = Convert.ToString(mo.Properties["Model"].Value);
- mobo.Manufacturer = Convert.ToString(mo.Properties["Manufacturer"].Value);
- mobo.Product = Convert.ToString(mo.Properties["Product"].Value);
- mobo.Version = Convert.ToString(mo.Properties["Version"].Value);
- try
- {
- ManagementObjectSearcher searcher2 = new ManagementObjectSearcher("SELECT * FROM Win32_IDEController");
- foreach (ManagementObject mo2 in searcher2.Get())
- {
- mobo.Chipset = Convert.ToString(mo2.Properties["Description"].Value);
- }
- }
- catch { }
- try
- {
- ManagementObjectSearcher searcher3 = new ManagementObjectSearcher("SELECT * FROM Win32_IDEController");
- foreach (ManagementObject mo3 in searcher3.Get())
- {
- mobo.Revision = Convert.ToString(mo3.Properties["RevisionNumber"].Value);
- }
- }
- catch { }
- try
- {
- ManagementObjectSearcher searcher4 = new ManagementObjectSearcher("SELECT * FROM Win32_ComputerSystem");
- foreach (ManagementObject mo4 in searcher4.Get())
- {
- mobo.SystemModel = Convert.ToString(mo4.Properties["Model"].Value);
- }
- }
- catch { }
- ManagementObjectSearcher searcher5 = new ManagementObjectSearcher("SELECT * FROM Win32_BIOS");
- foreach (ManagementObject mo5 in searcher5.Get())
- {
- mobo.BIOSName = Convert.ToString(mo5.Properties["Name"].Value);
- mobo.BIOSManufacturer = Convert.ToString(mo5.Properties["Manufacturer"].Value);
- mobo.BIOSVersion = Convert.ToString(mo5.Properties["Version"].Value);
- mobo.BIOSBuildNumber = Convert.ToString(mo5.Properties["BuildNumber"].Value);
- //ReleaseDate = DateTime.Parse(mo.Properties["ReleaseDate"].Value.ToString());
- }
- mobos.Add(mobo);
- }
- }
- catch (Exception ex)
- {
- Logger.LogError("IndiciumHelper.GetMotherboards", ex.Message, ex.StackTrace);
- }
- return mobos;
- }
- public static List<Disk> GetDisks()
- {
- List<Disk> disks = new List<Disk>();
- try
- {
- ManagementObjectSearcher searcher2 = new ManagementObjectSearcher("SELECT * FROM Win32_DiskDrive");
- foreach (ManagementObject mo2 in searcher2.Get())
- {
- Disk disk = new Disk();
- disk.Model = Convert.ToString(mo2.Properties["Model"].Value);
- disk.BytesPerSector = Convert.ToUInt32(mo2.Properties["BytesPerSector"].Value);
- disk.FirmwareRevision = Convert.ToString(mo2.Properties["FirmwareRevision"].Value);
- disk.MediaType = Convert.ToString(mo2.Properties["MediaType"].Value);
- disk.Capacity = ByteSize.FromBytes(Convert.ToDouble(mo2.Properties["Size"].Value));
- disks.Add(disk);
- }
- }
- catch (Exception ex)
- {
- Logger.LogError("IndiciumHelper.GetDisks", ex.Message, ex.StackTrace);
- }
- return disks;
- }
- public static void GetVolumes()
- {
- try
- {
- ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_Volume");
- foreach (ManagementObject mo in searcher.Get())
- {
- Volume volume = new Volume();
- volume.BlockSize = Convert.ToUInt64(mo.Properties["BlockSize"].Value);
- volume.Capacity = ByteSize.FromBytes(Convert.ToDouble(mo.Properties["Capacity"].Value));
- bool temp = Convert.ToBoolean(mo.Properties["Compressed"].Value);
- volume.Compressed = (temp) ? "Yes" : "No";
- volume.DriveLetter = Convert.ToString(mo.Properties["DriveLetter"].Value);
- UInt32 i = Convert.ToUInt32(mo.Properties["DriveType"].Value);
- volume.DriveType = SanitizeDriveType(i);
- volume.FileSystem = Convert.ToString(mo.Properties["FileSystem"].Value);
- volume.FreeSpace = ByteSize.FromBytes(Convert.ToDouble(mo.Properties["FreeSpace"].Value));
- volume.UsedSpace = volume.Capacity.Subtract(volume.FreeSpace);
- bool temp2 = Convert.ToBoolean(mo.Properties["IndexingEnabled"].Value);
- volume.Indexing = (temp2) ? "Yes" : "No";
- volume.Label = Convert.ToString(mo.Properties["Label"].Value);
- if (i == 2)
- {
- Removables.Add(volume);
- }
- else if (i == 5)
- {
- Opticals.Add(volume);
- }
- else
- {
- Volumes.Add(volume);
- }
- }
- }
- catch (Exception ex)
- {
- Logger.LogError("IndiciumHelper.GetVolumes", ex.Message, ex.StackTrace);
- }
- }
- public static void GetPeripherals()
- {
- try
- {
- ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_Keyboard");
- foreach (ManagementObject mo in searcher.Get())
- {
- Keyboard keyboard = new Keyboard();
- keyboard.Name = Convert.ToString(mo.Properties["Description"].Value);
- keyboard.Layout = Convert.ToString(mo.Properties["Layout"].Value);
- keyboard.Status = Convert.ToString(mo.Properties["Status"].Value);
- keyboard.FunctionKeys = Convert.ToUInt16(mo.Properties["NumberOfFunctionKeys"].Value);
- bool temp = Convert.ToBoolean(mo.Properties["IsLocked"].Value);
- keyboard.Locked = (temp) ? "Yes" : "No";
- Keyboards.Add(keyboard);
- }
- }
- catch (Exception ex)
- {
- Logger.LogError("IndiciumHelper.GetKeyboards", ex.Message, ex.StackTrace);
- }
- try
- {
- ManagementObjectSearcher searcher2 = new ManagementObjectSearcher("SELECT * FROM Win32_PointingDevice");
- foreach (ManagementObject mo2 in searcher2.Get())
- {
- PointingDevice pointingDevice = new PointingDevice();
- pointingDevice.Name = Convert.ToString(mo2.Properties["Description"].Value);
- pointingDevice.Manufacturer = Convert.ToString(mo2.Properties["Manufacturer"].Value);
- pointingDevice.Status = Convert.ToString(mo2.Properties["Status"].Value);
- pointingDevice.Buttons = Convert.ToUInt16(mo2.Properties["NumberOfButtons"].Value);
- bool temp = Convert.ToBoolean(mo2.Properties["IsLocked"].Value);
- pointingDevice.Locked = (temp) ? "Yes" : "No";
- pointingDevice.HardwareType = Convert.ToString(mo2.Properties["HardwareType"].Value);
- UInt16 i = Convert.ToUInt16(mo2.Properties["PointingType"].Value);
- pointingDevice.PointingType = SanitizePointingType(i);
- UInt16 i2 = Convert.ToUInt16(mo2.Properties["DeviceInterface"].Value);
- pointingDevice.DeviceInterface = SanitizeDeviceInterface(i2);
- PointingDevices.Add(pointingDevice);
- }
- }
- catch (Exception ex)
- {
- Logger.LogError("IndiciumHelper.GetPointingDevices", ex.Message, ex.StackTrace);
- }
- }
- public static List<GPU> GetGPUs()
- {
- List<GPU> GPUs = new List<GPU>();
- try
- {
- ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_VideoController");
- foreach (ManagementObject mo in searcher.Get())
- {
- GPU gpu = new GPU();
- gpu.Name = Convert.ToString(mo.Properties["Name"].Value);
- gpu.Memory = ByteSize.FromBytes(Convert.ToDouble(mo.Properties["AdapterRAM"].Value));
- gpu.ResolutionX = Convert.ToUInt32(mo.Properties["CurrentHorizontalResolution"].Value);
- gpu.ResolutionY = Convert.ToUInt32(mo.Properties["CurrentVerticalResolution"].Value);
- gpu.RefreshRate = Convert.ToUInt32(mo.Properties["CurrentRefreshRate"].Value);
- gpu.DACType = Convert.ToString(mo.Properties["AdapterDACType"].Value);
- UInt16 vtype = Convert.ToUInt16(mo.Properties["VideoMemoryType"].Value);
- gpu.VideoMemoryType = SanitizeVideoMemoryType(vtype);
- GPUs.Add(gpu);
- }
- }
- catch (Exception ex)
- {
- Logger.LogError("IndiciumHelper.GetGPUs", ex.Message, ex.StackTrace);
- }
- return GPUs;
- }
- public static void GetNetworkAdapters()
- {
- try
- {
- ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_NetworkAdapter");
- foreach (ManagementObject mo in searcher.Get())
- {
- NetworkDevice adapter = new NetworkDevice();
- adapter.AdapterType = Convert.ToString(mo.Properties["AdapterType"].Value);
- adapter.Manufacturer = Convert.ToString(mo.Properties["Manufacturer"].Value);
- adapter.ProductName = Convert.ToString(mo.Properties["ProductName"].Value);
- bool temp = Convert.ToBoolean(mo.Properties["PhysicalAdapter"].Value);
- adapter.PhysicalAdapter = (temp) ? "Yes" : "No";
- adapter.MacAddress = Convert.ToString(mo.Properties["MacAddress"].Value);
- adapter.ServiceName = Convert.ToString(mo.Properties["ServiceName"].Value);
- if (temp)
- {
- PhysicalAdapters.Add(adapter);
- }
- else
- {
- VirtualAdapters.Add(adapter);
- }
- }
- }
- catch (Exception ex)
- {
- Logger.LogError("IndiciumHelper.GetNetworkAdapters", ex.Message, ex.StackTrace);
- }
- }
- public static List<AudioDevice> GetAudioDevices()
- {
- List<AudioDevice> audioDevices = new List<AudioDevice>();
- try
- {
- ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_SoundDevice");
- foreach (ManagementObject mo in searcher.Get())
- {
- AudioDevice device = new AudioDevice();
- device.ProductName = Convert.ToString(mo.Properties["ProductName"].Value);
- device.Manufacturer = Convert.ToString(mo.Properties["Manufacturer"].Value);
- device.Status = Convert.ToString(mo.Properties["Status"].Value);
- audioDevices.Add(device);
- }
- }
- catch (Exception ex)
- {
- Logger.LogError("IndiciumHelper.GetAudioDevices", ex.Message, ex.StackTrace);
- }
- return audioDevices;
- }
- private static string SanitizeDriveType(UInt32 i)
- {
- string result = string.Empty;
- switch (i)
- {
- case 0:
- result = "Unknown";
- break;
- case 1:
- result = "No Root Directory";
- break;
- case 2:
- result = "Removable Disk";
- break;
- case 3:
- result = "Local Disk";
- break;
- case 4:
- result = "Network Drive";
- break;
- case 5:
- result = "Compact Disk";
- break;
- case 6:
- result = "RAM Disk";
- break;
- }
- return result;
- }
- private static string SanitizeVideoMemoryType(UInt16 i)
- {
- string result = string.Empty;
- switch (i)
- {
- case 1:
- result = "Other";
- break;
- case 2:
- result = "Unknown";
- break;
- case 3:
- result = "VRAM";
- break;
- case 4:
- result = "DRAM";
- break;
- case 5:
- result = "SRAM";
- break;
- case 6:
- result = "WRAM";
- break;
- case 7:
- result = "EDO RAM";
- break;
- case 8:
- result = "Burst Synchronous DRAM";
- break;
- case 9:
- result = "Pipelined Burst SRAM";
- break;
- case 10:
- result = "CDRAM";
- break;
- case 11:
- result = "3DRAM";
- break;
- case 12:
- result = "SDRAM";
- break;
- case 13:
- result = "SGRAM";
- break;
- }
- return result;
- }
- private static string SanitizeFormFactor(UInt16 i)
- {
- string result = string.Empty;
- switch (i)
- {
- case 0:
- result = "Unknown";
- break;
- case 1:
- result = "Other";
- break;
- case 2:
- result = "SIP";
- break;
- case 3:
- result = "DIP";
- break;
- case 4:
- result = "ZIP";
- break;
- case 5:
- result = "SOJ";
- break;
- case 6:
- result = "Proprietary";
- break;
- case 7:
- result = "SIMM";
- break;
- case 8:
- result = "DIMM";
- break;
- case 9:
- result = "TSOP";
- break;
- case 10:
- result = "PGA";
- break;
- case 11:
- result = "RIMM";
- break;
- case 12:
- result = "SODIMM";
- break;
- case 13:
- result = "SRIMM";
- break;
- case 14:
- result = "SMD";
- break;
- case 15:
- result = "SSMP";
- break;
- case 16:
- result = "QFP";
- break;
- case 17:
- result = "TQFP";
- break;
- case 18:
- result = "SOIC";
- break;
- case 19:
- result = "LCC";
- break;
- case 20:
- result = "PLCC";
- break;
- case 21:
- result = "BGA";
- break;
- case 22:
- result = "FPBGA";
- break;
- case 23:
- result = "LGA";
- break;
- }
- return result;
- }
- private static string SanitizeMemoryType(UInt16 i)
- {
- string result = string.Empty;
- switch (i)
- {
- case 0:
- result = "Unknown";
- break;
- case 1:
- result = "Other";
- break;
- case 2:
- result = "DRAM";
- break;
- case 3:
- result = "Synchonous DRAM";
- break;
- case 4:
- result = "Cache DRAM";
- break;
- case 5:
- result = "EDO";
- break;
- case 6:
- result = "EDRAM";
- break;
- case 7:
- result = "VRAM";
- break;
- case 8:
- result = "SRAM";
- break;
- case 9:
- result = "RAM";
- break;
- case 10:
- result = "ROM";
- break;
- case 11:
- result = "Flash";
- break;
- case 12:
- result = "EEPROM";
- break;
- case 13:
- result = "FEPROM";
- break;
- case 14:
- result = "EPROM";
- break;
- case 15:
- result = "CDRAM";
- break;
- case 16:
- result = "3DRAM";
- break;
- case 17:
- result = "SDRAM";
- break;
- case 18:
- result = "SGRAM";
- break;
- case 19:
- result = "RDRAM";
- break;
- case 20:
- result = "DDR";
- break;
- case 21:
- result = "DDR2";
- break;
- case 22:
- result = "DDR2 FB-DIMM";
- break;
- case 24:
- result = "DDR3";
- break;
- case 25:
- result = "FBD2";
- break;
- }
- return result;
- }
- private static string SanitizeDeviceInterface(UInt16 i)
- {
- string result = string.Empty;
- switch (i)
- {
- case 1:
- result = "Other";
- break;
- case 2:
- result = "Unknown";
- break;
- case 3:
- result = "Serial";
- break;
- case 4:
- result = "PS/2";
- break;
- case 5:
- result = "Infrared";
- break;
- case 6:
- result = "HP-HIL";
- break;
- case 7:
- result = "Bus mouse";
- break;
- case 8:
- result = "ADB (Apple Desktop Bus)";
- break;
- case 160:
- result = "Bus mouse DB-9";
- break;
- case 161:
- result = "Bus mouse micro-DIN";
- break;
- case 162:
- result = "USB";
- break;
- }
- return result;
- }
- private static string SanitizePointingType(UInt16 i)
- {
- string result = string.Empty;
- switch (i)
- {
- case 1:
- result = "Other";
- break;
- case 2:
- result = "Unknown";
- break;
- case 3:
- result = "Mouse";
- break;
- case 4:
- result = "Track Ball";
- break;
- case 5:
- result = "Track Point";
- break;
- case 6:
- result = "Glide Point";
- break;
- case 7:
- result = "Touch Pad";
- break;
- case 8:
- result = "Touch Screen";
- break;
- case 9:
- result = "Mouse - Optical Sensor";
- break;
- }
- return result;
- }
- }
- }
|