Cześć,
tworzę prosty program który ma mi pomóc w weryfikowaniu konfiguracji komputerów w pracy.
Cały program składa się z kilkunastu zapytań do WMI.
Np. coś takiego:
ManagementObjectSearcher Win32PhysicalMemory = new ManagementObjectSearcher("SELECT Capacity, DeviceLocator, FormFactor, Manufacturer, MemoryType, PartNumber, SerialNumber, Speed, ConfiguredVoltage FROM Win32_PhysicalMemory");
List<PhysicalMemory> ramList = new List<PhysicalMemory>();
foreach (ManagementObject obj in Win32PhysicalMemory.Get())
{
ramList.Add(new PhysicalMemory()
{
Capacity = obj["Capacity"].ToString(),
DeviceLocator = obj["DeviceLocator"].ToString(),
FormFactor = obj["FormFactor"].ToString(),
Manufacturer = obj["Manufacturer"].ToString(),
MemoryType = obj["MemoryType"].ToString(),
PartNumber = obj["PartNumber"].ToString(),
SerialNumber = obj["SerialNumber"].ToString(),
Speed = obj["Speed"].ToString(),
ConfiguredVoltage = obj["ConfiguredVoltage"].ToString()
});
}
foreach (var ram in ramList)
{
Console.WriteLine("- Device Locator: " + ram.DeviceLocator);
Console.WriteLine(" Capacity: " + Int64.Parse(ram.Capacity) / 1073741824 + "GB");
Console.WriteLine(" Manufacturer: " + ram.Manufacturer);
Console.WriteLine(" Part number: " + ram.PartNumber);
Console.WriteLine(" Serial number: " + ram.SerialNumber);
Console.WriteLine(" Form factor: " + ram.FormFactor);
Console.WriteLine(" MemoryType: " + ram.MemoryType);
Console.WriteLine(" Speed: " + ram.Speed + "MHz");
Console.WriteLine(" Voltage: " + float.Parse(ram.ConfiguredVoltage) / 1000 + "V");
}
i niestety z nieznanych mi przyczyn co uruchomienie dostaje naprzemiennie komunikaty:
"Wystąpił nieobsługiwany wyjątek typu „System.Management.ManagementException” w System.Management.dll
The supplied buffer was too small "
"Wystąpił nieobsługiwany wyjątek typu „System.OutOfMemoryException” w Dane testowe.exe
Za mało pamięci, aby kontynuować wykonywanie tego programu."
"Zgłoszony wyjątek: „System.Management.ManagementException” w System.Management.dll
Wystąpił nieobsługiwany wyjątek typu „System.Management.ManagementException” w System.Management.dll"
Wykres pamięci w Visual Studio pokazuje maksymalnie 91MB a laptop na którym pracuje ma 16GB pamięci z czego 8 jest wolne. W czym może tkwić problem? Być może jest to absurdalny błąd ponieważ nie zajmuję się na co dzień programowaniem i jest to mój 1 program w tym języku.