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

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

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

При работе моей программы пользователь задает координаты, по которым в дальнейшем строится массив с данными. Проблема в том, что нельзя заранее сказать, хватит ли памяти на хранение этого массива, т.к. он очень большой. Нашел в интернете код для получения размеров памяти, но он у меня почему-то не работает, при запуске выбрасывает исключение FileNotFoundException. И в методе GetOsVersion(string ipAddress) я не понимаю как правильно задать параметр ipAddress.
public class MemorySize
    {
        private string totalPhysicalMemory;
        private string totalVirtualMemory;
        private string totalPageFileSpace;
        private string availableVirtualMemory;
 
        public string TotalPhysicalMemory { get { return totalPhysicalMemory; } }
        public string TotalVirtualMemory { get { return totalVirtualMemory; } }
        public string TotalPageFileSpace { get { return totalPageFileSpace; } }
        public string AvailableVirtualMemory { get { return availableVirtualMemory; } }
 
        private string OSProductName;
        private string OSCurrentVersion;
 
        public MemorySize()
        {
            GetSystemInfo();
            GetOsVersion(null);
        }
 
        private void GetSystemInfo()
        {
            ObjectQuery winQuery = new ObjectQuery("SELECT * FROM Win32_ComputerSystem");
            ManagementObjectSearcher searcher = new ManagementObjectSearcher(winQuery);
            foreach (ManagementObject item in searcher.Get())
            {
                totalPhysicalMemory = item["TotalPhysicalMemory"].ToString();
                totalVirtualMemory = item["TotalVirtualMemory"].ToString();
                totalPageFileSpace = item["TotalPageFileSpace"].ToString();
                availableVirtualMemory = item["AvailableVirtualMemory"].ToString();
            }
        }
 
        private void GetOsVersion(string ipAddress)
        {
            using (var reg = RegistryKey.OpenRemoteBaseKey(RegistryHive.LocalMachine, ipAddress))
            using (var key = reg.OpenSubKey(@"Software\Microsoft\Windows NT\CurrentVersion\"))
            {
                OSProductName = key.GetValue("ProductName").ToString() ?? "Unknown";
                OSCurrentVersion = key.GetValue("CurrentVersion").ToString() ?? "Unknown";
            }
        }
    }

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

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

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


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

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

15   голосов , оценка 3.933 из 5
Похожие ответы