C # WMI запрос исключения - PullRequest
       12

C # WMI запрос исключения

0 голосов
/ 15 декабря 2018

У меня есть текстовое поле в моем приложении, которое отображает некоторую системную информацию, используя запросы wmi и чтение реестра.Проблема в том, что некоторые системы не отображают некоторую информацию из-за повреждения в ОС (процессор: недоступен и т. Д.), Поэтому нет способа извлечь эту информацию, используя мои методы или изнутри ОС.Все это приводит к сбою моего приложения.Как бы мне избежать избежания сбоя и отображения текста вместо каждой строки, которую невозможно найти.EX: НЕ ДОСТУПНО. Код моего текстового поля:

private void TextBox1_Initialized(object sender, EventArgs e)
    {
        BackgroundWorker bw = new BackgroundWorker();
        bw.WorkerReportsProgress = true;
        bw.DoWork += new DoWorkEventHandler(delegate (object o, DoWorkEventArgs args)
        {

        });
        bw.RunWorkerCompleted += new RunWorkerCompletedEventHandler(delegate (object o, RunWorkerCompletedEventArgs args)
        {
            TextBox1.Text = Registry.GetValue(@"HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System\CentralProcessor\0", "ProcessorNameString", null).ToString().Replace("(R)", "").Replace("(TM)", "") + Environment.NewLine;
            TextBox1.Text += "Memory: " + getRAMsize() + Environment.NewLine;
            TextBox1.Text += "Free Space: " + GetTotalFreeSpace(sysdrive) + " GB" + Environment.NewLine;
            TextBox1.Text += diskname() + Environment.NewLine;
            if (Is64BitSystem)
            {
                TextBox1.Text += getOS() + " 64bit" + Environment.NewLine;
            }
            else
            {
                TextBox1.Text += getOS() + " 32bit" + Environment.NewLine;
            }
            Clipboard.SetDataObject(TextBox1.Text);
        });
        bw.RunWorkerAsync();
    }

Заранее спасибо.

1 Ответ

0 голосов
/ 15 декабря 2018

используйте try catach, чтобы избежать сбоя приложения:

 string ProcessorNameString = "ProcessorNameString: not available";
        string memory = "Memory: not availbale ";
        string freeSpace = "Free space: not available";
        //add others 
                   try
        {
            ProcessorNameString = Registry.GetValue(@"HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System\CentralProcessor\0", "ProcessorNameString", null).ToString().Replace("(R)", "").Replace("(TM)", "") + Environment.NewLine;
        }
        catch{}

        try
        {
            memory = string.Format("Free Space:{0}DB", getRAMsize());
        }
        catch { }

        try
        {
            //freeSpace here 
        }
        catch { }
        TextBox1.Text = string.Format("{0}{1}{2}{3}{4}{5}"
            , ProcessorNameString, Environment.NewLine
            , memory, Environment.NewLine
            , freeSpace, Environment.NewLine);
        Clipboard.SetDataObject(TextBox1.Text);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...