WMI. Получить размер оперативной памяти и название ОС. Выбрасывается исключение FileNotFoundException - C#

Узнай цену своей работы

Формулировка задачи:

При работе моей программы пользователь задает координаты, по которым в дальнейшем строится массив с данными. Проблема в том, что нельзя заранее сказать, хватит ли памяти на хранение этого массива, т.к. он очень большой. Нашел в интернете код для получения размеров памяти, но он у меня почему-то не работает, при запуске выбрасывает исключение FileNotFoundException. И в методе GetOsVersion(string ipAddress) я не понимаю как правильно задать параметр ipAddress.
Листинг программы
  1. public class MemorySize
  2. {
  3. private string totalPhysicalMemory;
  4. private string totalVirtualMemory;
  5. private string totalPageFileSpace;
  6. private string availableVirtualMemory;
  7. public string TotalPhysicalMemory { get { return totalPhysicalMemory; } }
  8. public string TotalVirtualMemory { get { return totalVirtualMemory; } }
  9. public string TotalPageFileSpace { get { return totalPageFileSpace; } }
  10. public string AvailableVirtualMemory { get { return availableVirtualMemory; } }
  11. private string OSProductName;
  12. private string OSCurrentVersion;
  13. public MemorySize()
  14. {
  15. GetSystemInfo();
  16. GetOsVersion(null);
  17. }
  18. private void GetSystemInfo()
  19. {
  20. ObjectQuery winQuery = new ObjectQuery("SELECT * FROM Win32_ComputerSystem");
  21. ManagementObjectSearcher searcher = new ManagementObjectSearcher(winQuery);
  22. foreach (ManagementObject item in searcher.Get())
  23. {
  24. totalPhysicalMemory = item["TotalPhysicalMemory"].ToString();
  25. totalVirtualMemory = item["TotalVirtualMemory"].ToString();
  26. totalPageFileSpace = item["TotalPageFileSpace"].ToString();
  27. availableVirtualMemory = item["AvailableVirtualMemory"].ToString();
  28. }
  29. }
  30. private void GetOsVersion(string ipAddress)
  31. {
  32. using (var reg = RegistryKey.OpenRemoteBaseKey(RegistryHive.LocalMachine, ipAddress))
  33. using (var key = reg.OpenSubKey(@"Software\Microsoft\Windows NT\CurrentVersion\"))
  34. {
  35. OSProductName = key.GetValue("ProductName").ToString() ?? "Unknown";
  36. OSCurrentVersion = key.GetValue("CurrentVersion").ToString() ?? "Unknown";
  37. }
  38. }
  39. }

Решение задачи: «WMI. Получить размер оперативной памяти и название ОС. Выбрасывается исключение FileNotFoundException»

textual
Листинг программы
  1. [StructLayout(LayoutKind.Sequential, Pack = 1)]
  2.     public struct PixelColorDetails
  3.     {
  4.         public Byte blue;
  5.         public Byte green;
  6.         public Byte red;
  7.     }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 3.933 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы