在C# Windows Form应用程序中使用系统信息
系统信息(msinfo32)是一个允许用户查看其计算机所有信息的程序。
术语 "系统 "指的是共同完成特定任务的计算机组件,如操作系统、计算机中安装的内存、操作系统版本等。另一方面,信息是对数据的总结,以及如何以输出的形式传达给用户。
在这篇文章中,我们将了解如何检查系统信息和可以用来检查的类,以及编写一个C#程序来演示。
我们还将看看如何在C#中使用Management 命名空间和Environment 来获取各种系统数据。
Environment 类是一个静态类,它给出了关于当前环境的信息和操纵它的方法。Management 命名空间是一个由许多类组成的命名空间,提供对管理信息、系统事件、设备等的访问。
目标
在本教程结束时,你应该能够使用Environment 类和Management 命名空间来检查系统信息。
前提条件
在本教程中,我们将假设你已经熟悉了在C# 中开发Windows Forms应用程序的基础知识。我们还将假设你对C# 编程有一定的了解。
此外,你需要在你的计算机上安装Visual Studio。
第一部分:使用环境类
在本节中,我们将使用Environment 类来检查下列系统信息。
- 机器名称
- 用户名
- 操作系统细节
- 处理器是基于x64的还是基于x32的
现在我们将创建一个简单的Windows窗体应用程序来演示如何检查上述的系统信息。
第1步:设计一个Windows窗体页面
使用四个TextBox 控件进行显示,四个labels ,两个buttons 。一个用于检查系统信息,另一个用于退出,如下图所示。

第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
上面的代码片段中使用的属性列举如下。
MachineNameUserNameIs64BitOperatingSystemOSVersion.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 包括各种类,涵盖了系统管理对象和关于系统的管理事件的基础知识。这个类的例子包括。
ManagementBaseObjectManagementClassManagementObjectSearcherManagementScope,等等。
我们将在本节中使用ManagementClass 类和ManagementObjectCollection 类来检查以下硬件信息。
- 处理器ID
- BIOS制造商序列号
- 物理内存序列号
- 主板序列号
第1步:设计一个Windows窗体页面
使用四个TextBox 控件进行显示,四个labels ,两个buttons ,一个用于检查硬件信息,另一个用于退出,如下所示。

第2步:给TextBox控件命名
正如我之前所说的,必须遵循命名惯例,TextBoxs应以不同的方式命名。在我的例子中,文本框被命名为txtProcessorId ,txtBIOSMaker ,txtPhysicalMemory ,和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以及第二部分中的物理内存序列号。