Example #1
0
        static void WriteEnvironment(TextWriter output)
        {
            var buffer = new NativeStructs.MemoryStatusExtended {
                Size = 64
            };

            NativeMethods.GlobalMemoryStatusEx(buffer);
            try
            {
                foreach (ManagementObject bios in new ManagementClass("Win32_BIOS").GetInstances())
                {
                    output.WriteLine("BIOS       = {0} ({1})", (string)bios["Description"], (string)bios["Manufacturer"]);
                }
            }
            catch (Exception error)
            {
                Trace.WriteLine(error);
            }
            try
            {
                foreach (ManagementObject processor in new ManagementClass("Win32_Processor").GetInstances())
                {
                    output.Write("Processor  = {0} ({2} threads, {1} cores, {3:F1} GHz)", (string)processor["Name"], (uint)processor["NumberOfCores"], (uint)processor["NumberOfLogicalProcessors"], (float)(uint)processor["MaxClockSpeed"] / 1000);
                    foreach (ManagementObject cpuCache in processor.GetRelated("Win32_CacheMemory"))
                    {
                        output.Write(" ({0} {1:F0} KB)", (string)cpuCache["Purpose"], (float)(uint)cpuCache["InstalledSize"]);
                    }
                    output.WriteLine();
                }
            }
            catch (Exception error)
            {
                Trace.WriteLine(error);
            }
            output.WriteLine("Memory     = {0:F1} GB", (float)buffer.TotalPhysical / 1024 / 1024 / 1024);
            try
            {
                foreach (ManagementObject display in new ManagementClass("Win32_VideoController").GetInstances())
                {
                    output.WriteLine("Video      = {0} ({1:F1} GB RAM){2}", (string)display["Description"], (float)(uint)display["AdapterRAM"] / 1024 / 1024 / 1024, GetPnPDeviceDrivers(display));
                }
            }
            catch (Exception error)
            {
                Trace.WriteLine(error);
            }
            try
            {
                foreach (var screen in Screen.AllScreens)
                {
                    output.WriteLine("Display    = {0} ({3} x {4}, {5}-bit{6}, {1} x {2})", screen.DeviceName, screen.Bounds.X, screen.Bounds.Y, screen.Bounds.Width, screen.Bounds.Height, screen.BitsPerPixel, screen.Primary ? ", primary" : "");
                }
            }
            catch (Exception error)
            {
                Trace.WriteLine(error);
            }
            try
            {
                foreach (ManagementObject sound in new ManagementClass("Win32_SoundDevice").GetInstances())
                {
                    Console.WriteLine("Sound      = {0}{1}", (string)sound["Description"], GetPnPDeviceDrivers(sound));
                }
            }
            catch (Exception error)
            {
                Trace.WriteLine(error);
            }
            try
            {
                foreach (ManagementObject disk in new ManagementClass("Win32_LogicalDisk").GetInstances())
                {
                    output.Write("Disk       = {0} ({1}, {2}", (string)disk["Name"], (string)disk["Description"], (string)disk["FileSystem"]);
                    if (disk["Size"] != null && disk["FreeSpace"] != null)
                    {
                        output.WriteLine(", {0:F1} GB, {1:F1} GB free)", (float)(ulong)disk["Size"] / 1024 / 1024 / 1024, (float)(ulong)disk["FreeSpace"] / 1024 / 1024 / 1024);
                    }
                    else
                    {
                        output.WriteLine(")");
                    }
                }
            }
            catch (Exception error)
            {
                Trace.WriteLine(error);
            }
            try
            {
                foreach (ManagementObject os in new ManagementClass("Win32_OperatingSystem").GetInstances())
                {
                    output.WriteLine("OS         = {0} {1} ({2})", (string)os["Caption"], (string)os["OSArchitecture"], (string)os["Version"]);
                }
            }
            catch (Exception error)
            {
                Trace.WriteLine(error);
            }
        }
Example #2
0
        private static void WriteEnvironment(StringBuilder output)
        {
            NativeStructs.MemoryStatusExtended buffer = new NativeStructs.MemoryStatusExtended {
                Size = 64
            };
            NativeMethods.GlobalMemoryStatusEx(buffer);
            try
            {
                using (ManagementObjectSearcher objectSearcher = new ManagementObjectSearcher("Select Description, Manufacturer from Win32_BIOS"))
                {
                    foreach (ManagementBaseObject bios in objectSearcher.Get())
                    {
                        output.AppendLine($"{"BIOS",-12}= {bios["Description"]} ({bios["Manufacturer"]})");
                    }
                }
            }
            catch (ManagementException error)
            {
                Trace.WriteLine(error);
            }
            try
            {
                using (ManagementObjectSearcher objectSearcher = new ManagementObjectSearcher("Select DeviceID, Name, NumberOfLogicalProcessors, NumberOfCores, MaxClockSpeed, L2CacheSize, L3CacheSize from Win32_Processor"))
                {
                    foreach (ManagementBaseObject processor in objectSearcher.Get())
                    {
                        output.AppendLine($"{"Processor",-12}= {processor["Name"]} ({(uint)processor["NumberOfLogicalProcessors"]} threads, {processor["NumberOfCores"]} cores, {(uint)processor["MaxClockSpeed"] / 1000f:F1} GHz, L2 Cache {processor["L2CacheSize"]:F0} KB, L3 Cache {processor["L3CacheSize"]:F0} KB)");
                    }
                }
            }
            catch (ManagementException error)
            {
                Trace.WriteLine(error);
            }
            output.AppendLine($"{"Memory",-12}= {buffer.TotalPhysical / 1024f / 1024 / 1024:F1} GB");
            try
            {
                using (ManagementObjectSearcher objectSearcher = new ManagementObjectSearcher("Select DeviceID, Description, AdapterRAM, AdapterDACType from Win32_VideoController"))
                {
                    foreach (ManagementBaseObject display in objectSearcher.Get())
                    {
                        output.AppendLine($"{"Video",-12}= {display["Description"]} ({(uint)display["AdapterRAM"] / 1024f / 1024 / 1024:F1} GB {display["AdapterDACType"]} RAM){GetPnPDeviceDrivers(display as ManagementObject)}");
                    }
                }
            }
            catch (ManagementException error)
            {
                Trace.WriteLine(error);
            }

            foreach (Screen screen in Screen.AllScreens)
            {
                output.AppendLine($"{"Display",-12}= {screen.DeviceName} (resolution {screen.Bounds.Width} x {screen.Bounds.Height}, {screen.BitsPerPixel}-bit{(screen.Primary ? ", primary" : "")}, location {screen.Bounds.X}::{screen.Bounds.Y}, scaling factor {DisplayScalingFactor(screen):F2}, using {GraphicsAdapter.Adapters.Where(adapter => adapter.DeviceName == screen.DeviceName).Single().Description})");
            }

            try
            {
                using (ManagementObjectSearcher objectSearcher = new ManagementObjectSearcher("Select DeviceID, Description from Win32_SoundDevice"))
                {
                    foreach (ManagementBaseObject sound in objectSearcher.Get())
                    {
                        output.AppendLine($"{"Sound",-12}= {sound["Description"]}{GetPnPDeviceDrivers(sound as ManagementObject)}");
                    }
                }
            }
            catch (ManagementException error)
            {
                Trace.WriteLine(error);
            }
            try
            {
                using (ManagementObjectSearcher objectSearcher = new ManagementObjectSearcher("Select Name, Description, FileSystem, Size, FreeSpace from Win32_LogicalDisk"))
                {
                    foreach (ManagementBaseObject disk in objectSearcher.Get())
                    {
                        if (disk["Size"] != null)
                        {
                            output.AppendLine($"{"Disk",-12}= {disk["Name"]} ({disk["Description"]}, {disk["FileSystem"]}, {(ulong)(disk["Size"] ?? 0ul) / 1024f / 1024 / 1024:F1} GB, {(ulong)(disk["FreeSpace"] ?? 0ul) / 1024f / 1024 / 1024:F1} GB free)");
                        }
                        else
                        {
                            output.AppendLine($"{"Disk",-12}= {disk["Name"]} ({disk["Description"]})");
                        }
                    }
                }
            }
            catch (ManagementException error)
            {
                Trace.WriteLine(error);
            }
            try
            {
                using (ManagementObjectSearcher objectSearcher = new ManagementObjectSearcher("Select Caption, OSArchitecture, Version from Win32_OperatingSystem"))
                {
                    foreach (ManagementBaseObject os in objectSearcher.Get())
                    {
                        output.AppendLine($"{"OS",-12}= {os["Caption"]} {os["OSArchitecture"]} ({os["Version"]})");
                    }
                }
            }
            catch (ManagementException error)
            {
                Trace.WriteLine(error);
            }
        }
Example #3
0
 public static extern bool GlobalMemoryStatusEx([In, Out] NativeStructs.MemoryStatusExtended buffer);