如何在C# Windows Form应用程序中处理系统信息

221 阅读5分钟

在C# Windows Form应用程序中使用系统信息

系统信息(msinfo32)是一个允许用户查看其计算机所有信息的程序。

术语 "系统 "指的是共同完成特定任务的计算机组件,如操作系统、计算机中安装的内存、操作系统版本等。另一方面,信息是对数据的总结,以及如何以输出的形式传达给用户。

在这篇文章中,我们将了解如何检查系统信息和可以用来检查的类,以及编写一个C#程序来演示。

我们还将看看如何在C#中使用Management 命名空间和Environment 来获取各种系统数据。

Environment 类是一个静态类,它给出了关于当前环境的信息和操纵它的方法。Management 命名空间是一个由许多类组成的命名空间,提供对管理信息、系统事件、设备等的访问。

目标

在本教程结束时,你应该能够使用Environment 类和Management 命名空间来检查系统信息。

前提条件

在本教程中,我们将假设你已经熟悉了在C# 中开发Windows Forms应用程序的基础知识。我们还将假设你对C# 编程有一定的了解。

此外,你需要在你的计算机上安装Visual Studio。

第一部分:使用环境类

在本节中,我们将使用Environment 类来检查下列系统信息。

  1. 机器名称
  2. 用户名
  3. 操作系统细节
  4. 处理器是基于x64的还是基于x32的

现在我们将创建一个简单的Windows窗体应用程序来演示如何检查上述的系统信息。

第1步:设计一个Windows窗体页面

使用四个TextBox 控件进行显示,四个labels ,两个buttons 。一个用于检查系统信息,另一个用于退出,如下图所示。

Environment class Design page

第2步:命名文本框控件

在本表格中给文本框命名时,必须遵守C# 命名标准,应以不同方式命名。在我的案例中,这些文本框被命名为txtComputerName,txtUserName,txtOperatingSystem, 和txtSytemBit

第3步:添加代码

这是最后一步,我们应该提供协助获得系统信息的代码,这将在两个按钮的功能中进行编码,如下所示。

按钮1:检查系统信息

将系统信息按钮的名称改为button5 ,双击它,并添加以下代码。

private void button5_Click(object sender, EventArgs e)
{
    txtComputerName.Enabled = true;
    txtOperatingSystem.Enabled = true;
    txtSytemBit.Enabled = true;
    txtUserName.Enabled = true;
    txtSytemBit.Enabled = true;

    // Checking name of the computer used
    String q1 = Environment.MachineName;
    txtComputerName.Text = q1;
    // Checking name of the user to this computer
    String q2 = Environment.UserName;
    txtUserName.Text = q2;
    // Checking if the operating system installed is 64 bits or not
    bool q4 = Environment.Is64BitOperatingSystem;

    if (q4 == true)
    {
        txtSytemBit.Text = " 64-bit operating system, x64-based processor".ToString();
    }
    else
    {
        txtSytemBit.Text = " 32-bit operating system, x32-based processor".ToString();
    }

    String q5 =  (Environment.OSVersion.ToString());
    txtOperatingSystem.Text = Convert.ToString(q5);
    String q6 = Environment.OSVersion.Platform.ToString();
}

在上面的代码片断中,我们利用Environment 类来访问系统的一些信息。Environment 类是一个静态类,这意味着它的方法和属性只能通过使用类名来访问,不能实例化。

Environment 类有几个属性,帮助我们执行各种功能。我们只需使用下面的语法,用类的名称调用每个属性。

ClassName.propert_name

// eg. Environment.UserName

上面的代码片段中使用的属性列举如下。

  • MachineName
  • UserName
  • Is64BitOperatingSystem
  • OSVersion.Platform

MachineName 属性用于访问当前正在使用的计算机的NetBIOS名称。UserName 用于获取当前登录用户的名称。Is64BitOperatingSystem 用于确定操作系统是否为64位,OSVersion 用于确定操作系统的版本平台。

按钮2:退出

将退出按钮的名称改为button9 ,双击它,并添加下面的代码。

private void button9_Click(object sender, EventArgs e)
{
    const string message = "Do you what to exit?";
    const string caption = "Closing the page";
    var results = MessageBox.Show(message, caption, MessageBoxButtons.YesNo, MessageBoxIcon.Question);

    if (results == DialogResult.Yes)
    {
        Application.Exit();
    }
}

上面代码中的Application.Exit() 方法在用户点击Exit 按钮时执行退出动作。因为Application 类是一个不能被实例化的静态类,这个方法只能被访问或调用,如图所示的类名。

Application.Exit();

第二部分:使用管理命名空间

System.Management 包括各种类,涵盖了系统管理对象和关于系统的管理事件的基础知识。这个类的例子包括。

  • ManagementBaseObject
  • ManagementClass
  • ManagementObjectSearcher
  • ManagementScope,等等。

我们将在本节中使用ManagementClass 类和ManagementObjectCollection 类来检查以下硬件信息。

  • 处理器ID
  • BIOS制造商序列号
  • 物理内存序列号
  • 主板序列号

第1步:设计一个Windows窗体页面

使用四个TextBox 控件进行显示,四个labels ,两个buttons ,一个用于检查硬件信息,另一个用于退出,如下所示。

Management namespace Design page

第2步:给TextBox控件命名

正如我之前所说的,必须遵循命名惯例,TextBoxs应以不同的方式命名。在我的例子中,文本框被命名为txtProcessorIdtxtBIOSMakertxtPhysicalMemory ,和txtMother

第3步:添加代码

这是最后一步,我们应该提供协助获得硬件信息的代码,这些代码将在两个按钮的函数中编码,如下所示。

按钮1:检查系统信息

将系统信息按钮的名称改为button5 ,双击它,并添加以下代码。

private void button5_Click(object sender, EventArgs e)
{
    ManagementClass management = new ManagementClass("Win32_Processor");
    ManagementObjectCollection managementobject = management.GetInstances();

    foreach (ManagementObject mngObject in managementobject)
    {
        txtProcessorId.Text= mngObject.Properties["ProcessorId"].Value.ToString();
        break;
    }

    // Check BIOS cheker
    ManagementClass management2 = new ManagementClass("Win32_BIOS");
    ManagementObjectCollection managementobject2 = management2.GetInstances();
    foreach (ManagementObject mngObject2 in managementobject2)
    {
        txtBIOSMaker.Text= mngObject2.Properties["SerialNumber"].Value.ToString();
        break;
    }

    // Check physical memory serial number
    ManagementClass management3 = new ManagementClass("Win32_PhysicalMedia");

    ManagementObjectCollection managementobject3 = management3.GetInstances();
    foreach (ManagementObject mngObject3 in managementobject3)
    {
        txtPhysicalMemory.Text= mngObject3.Properties["SerialNumber"].Value.ToString();
        break;
    }


    // Check Motherboard
    ManagementClass management4 = new ManagementClass("Win32_BaseBoard");
    ManagementObjectCollection managementobject4 = management4.GetInstances();

    foreach (ManagementObject mngObject4 in managementobject4)
    {
        txtMother.Text = mngObject4.Properties["SerialNumber"].Value.ToString();
        break;
    }
}

ManagementClass ,用于检查硬件信息,如处理器id、BIOS Maker序列号、物理内存序列号,以及我们案例中的主板序列号,如上面的代码示例所示。

要访问ManagementClass 的属性,我们必须首先建立ManagementClass 类对象以及ManagementObjectCollection 类对象。

上面的类所提供的值属性协助我们显示特定安装硬件的值。

这一部分的退出按钮使用的代码与上一部分相同。请随意复制和粘贴上一部分的代码。

总结

在本文的第一部分,我们使用Environment 类来检查机器名称、用户名、操作系统、系统类型以及处理器是基于x64还是基于x32。

我们还学习了如何使用Management 命名空间来显示各种硬件数据,如BIOS序列号、主板序列号、处理器ID以及第二部分中的物理内存序列号。