Как отобразить общую физическую оперативную память и серийный номер BIOS в текстовом поле
Я написал довольно простую программу на C#, что-то вроде системного монитора, который наша служба поддержки использует для быстрого получения некоторой информации от пользователей.
Он отображает имя пользователя, домен, операционную систему, IP-адрес и несколько других битов информации.
С тех пор меня попросили расширить функциональность, включив в нее общую оперативную память и серийный номер компьютера, но, как бы я ни старался, я не могу заставить его отображаться в текстовом поле.
Что я уже пробовал:
Для оперативной памяти я попытался использовать счетчик производительности, но он показывал только доступную оперативную память. Итак, я думаю, что мне нужно использовать WMI?
Для сериала у меня есть вот это:
public static string GetMotherBoardID() { string mbInfo = String.Empty; ManagementScope scope = new ManagementScope("\\\\" + Environment.MachineName + "\\root\\cimv2"); scope.Connect(); ManagementObject wmiClass = new ManagementObject(scope, new ManagementPath("Win32_BaseBoard.Tag=\"Base Board\""), new ObjectGetOptions()); foreach (PropertyData propData in wmiClass.Properties) { if (propData.Name == "SerialNumber") mbInfo = String.Format("{0,-25}{1}", propData.Name, Convert.ToString(propData.Value)); } return mbInfo; ITHelper.txtSerial.Text = mbInfo.ToString(); }
Который отображает следующую ошибку
Ссылка на объект необходима для нестатического поля, метода или свойства
Для барана я уже пробовал
private static void DisplayTotalRam() { string Query = "SELECT MaxCapacity FROM Win32_PhysicalMemoryArray"; ManagementObjectSearcher searcher = new ManagementObjectSearcher(Query); int amount = 0; foreach (ManagementObject memo in searcher.Get()) { amount += Convert.ToInt32(Convert.ToInt64(memo["Capacity"]) / 1024 / 1024 / 1024); txtRam.Text = amount.ToString(); } }
Но я получаю то же самое сообщение, что и выше
CPallini
Какая линия является оскорбительной?
Member 11982907
ITHelper.txtSerial.Text = mbInfo.Метод toString();
и
txtRam.Текст = сумма.Метод toString();
Спасибо
Richard MacCutchan
Вы пытаетесь получить доступ к полям вашей формы из статических методов.