Beispiel #1
0
        //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);
        }
Beispiel #2
0
        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);
        }