//https://msdn.microsoft.com/en-us/library/windows/desktop/aa394372%28v=vs.85%29.aspx private static ProcessInfo ManagementObjectToProcessInfo(ManagementObject queryObj, Process process) { var result = new ProcessInfo { Name = queryObj.TryGetProperty <string>("Name"), PrivateBytes = process?.PrivateMemorySize64 ?? 0, WorkingSet = (long)queryObj.TryGetProperty <ulong>("WorkingSetSize"), Id = (int)queryObj.TryGetProperty <uint>("ProcessId"), ParentProcess = (int)queryObj.TryGetProperty <uint>("ParentProcessId"), StartTime = (ManagementExtensions.ToDateTimeSafe(queryObj.TryGetProperty <string>("CreationDate")) ?? ExceptionUtilities.EatExceptions(() => process?.StartTime) ?? DateTime.MinValue) .ToUniversalTime(), Filename = queryObj.TryGetProperty <string>("ExecutablePath"), CommandLine = queryObj.TryGetProperty <string>("CommandLine"), MainWindowHandle = (long)(process?.MainWindowHandle ?? IntPtr.Zero) }; ApplyProcessInformation(process, result, queryObj.TryGetProperty <string>("ExecutablePath")); return(result); }
private List <DeviceInfo> GetAllDevices() { var list = new List <DeviceInfo>(); using ( var searcher = new ManagementObjectSearcher(@"\\" + Environment.MachineName + @"\root\CIMV2", "Select * from Win32_PnPEntity")) using (var collection = searcher.Get()) { foreach (var managementObject in collection.Cast <ManagementObject>()) { if (managementObject.TryGetProperty <string>("DeviceId") == @"HTREE\ROOT\0") { continue; } var device = new DeviceInfo { Name = managementObject.TryGetProperty <string>("Caption"), DeviceId = managementObject.TryGetProperty <string>("DeviceId"), Description = managementObject.TryGetProperty <string>("Description"), Manufacturer = managementObject.TryGetProperty <string>("Manufacturer"), StatusCode = managementObject.TryGetProperty <uint>("ConfigManagerErrorCode") }; var hardwareIds = managementObject.TryGetProperty <string[]>("HardWareID"); if (hardwareIds?.Length > 0) { device.HardwareId = hardwareIds[0]; } list.Add(device); var classGuidString = managementObject.TryGetProperty <string>("ClassGuid"); Guid classGuid; #if NET35 try { classGuid = new Guid(classGuidString); } catch (Exception) { classGuid = Guid.Empty; } #else if (!Guid.TryParse(classGuidString, out classGuid)) { classGuid = Guid.Empty; } #endif device.Category = DeviceCategory.None; foreach (var value in (DeviceCategory[])Enum.GetValues(typeof(DeviceCategory))) { if (value.GetAttributeOfType <DeviceCategoryGuidAttribute>().Guid == classGuid) { device.Category = value; break; } } if (device.Category == DeviceCategory.None) { device.CustomCategory = managementObject.TryGetProperty <string>("PNPClass"); } } } using ( var searcher = new ManagementObjectSearcher(@"\\" + Environment.MachineName + @"\root\CIMV2", "Select * from Win32_PnPSignedDriver")) using (var collection = searcher.Get()) { foreach (var managementObject in collection.Cast <ManagementObject>()) { var deviceId = managementObject.TryGetProperty <string>("DeviceID"); var device = list.FirstOrDefault(x => x.DeviceId == deviceId); if (device != null) { device.DriverFriendlyName = managementObject.TryGetProperty <string>("FriendlyName"); var buildDate = managementObject.TryGetProperty <string>("DriverDate"); if (buildDate != null) { device.DriverBuildDate = (ManagementExtensions.ToDateTimeSafe(buildDate) ?? DateTime.MinValue).ToUniversalTime(); } device.DriverDescription = managementObject.TryGetProperty <string>("Description"); var installDate = managementObject.TryGetProperty <string>("InstallDate"); if (installDate != null) { device.DriverInstallDate = (ManagementExtensions.ToDateTimeSafe(installDate) ?? DateTime.MinValue).ToUniversalTime(); } device.DriverName = managementObject.TryGetProperty <string>("DriverName"); device.DriverProviderName = managementObject.TryGetProperty <string>("DriverProviderName"); device.DriverSigner = managementObject.TryGetProperty <string>("Signer"); device.DriverVersion = managementObject.TryGetProperty <string>("DriverVersion"); device.DriverInfName = managementObject.TryGetProperty <string>("InfName"); } } } return(list); }