我一直在使用 Windows 的 Win32 类,并为基于 Windows 的机器(显然)编写了一个清单程序。
有没有办法通过程序收集系统信息并将信息转储到文本文件中?
我正在寻找检索硬件信息(MAC 地址、硬盘驱动器大小。安装的内存、操作系统版本等)
提前致谢
我一直在使用 Windows 的 Win32 类,并为基于 Windows 的机器(显然)编写了一个清单程序。
有没有办法通过程序收集系统信息并将信息转储到文本文件中?
我正在寻找检索硬件信息(MAC 地址、硬盘驱动器大小。安装的内存、操作系统版本等)
提前致谢
对于 Mac 地址,您可以使用 System.Net.NetworkInformation.NetworkInterface 类找到它。
static string GetMacAddress()
{
string macAddresses = "";
foreach (NetworkInterface nic in NetworkInterface.GetAllNetworkInterfaces())
{
// Find all ethernet MACs
if (nic.NetworkInterfaceType == NetworkInterfaceType.Ethernet)
{
macAddresses += nic.GetPhysicalAddress().ToString();
}
}
return macAddresses;
}
要以编程方式查找其他系统规范,您可以使用类似于以下代码的内容。如果您转到Environment 类的 MSDN 页面,您可以找到更多有用的系统信息。
public string SysInfo()
{
Stringbuilder systemInformation = new Stringbuilder(string.Empty);
systemInformation.AppendFormat("Operation System: {0}\n", Environment.OSVersion);
systemInformation.AppendFormat("ProcessorCount: {0}\n", Environment.ProcessorCount);
systemInformation.AppendFormat("SystemDirectory: {0}\n", Environment.SystemDirectory);
systemInformation.AppendFormat("UserDomainName: {0}\n", Environment.UserDomainName);
systemInformation.AppendFormat("UserName: {0}\n", Environment.UserName);
foreach (System.IO.DriveInfo drive in System.IO.DriveInfo.GetDrives())
{
// Get each drive
systemInformation.AppendFormat("\t Drive: {0}" +
"\n\t\t VolumeLabel: {1}" +
"\n\t\t DriveType: {2}" +
"\n\t\t DriveFormat: {3}" +
"\n\t\t TotalSize: {4}" +
"\n\t\t AvailableFreeSpace: {5}\n",
DriveInfo1.Name, DriveInfo1.VolumeLabel, DriveInfo1.DriveType,
DriveInfo1.DriveFormat, DriveInfo1.TotalSize, DriveInfo1.AvailableFreeSpace);
}
return systemInformation.ToString();
}
非常感谢您提出这个问题。我正在做一个相同的项目,这非常有帮助。
答案正是我需要的。
我建议对 SysInfo() 函数的winglerw28 代码片段进行编辑:
systemInformation.AppendFormat("\t Drive: {0}" +
"\n\t\t VolumeLabel: {1}" +
"\n\t\t DriveType: {2}" +
"\n\t\t DriveFormat: {3}" +
"\n\t\t TotalSize: {4}" +
"\n\t\t AvailableFreeSpace: {5}\n",
DriveInfo1.Name, DriveInfo1.VolumeLabel, DriveInfo1.DriveType,
DriveInfo1.DriveFormat, DriveInfo1.TotalSize, DriveInfo1.AvailableFreeSpace);
我很确定“DriveInfo1”引用应该全部更改为“驱动器”,如下所示:
systemInformation.AppendFormat("\t Drive: {0}" +
"\n\t\t VolumeLabel: {1}" +
"\n\t\t DriveType: {2}" +
"\n\t\t DriveFormat: {3}" +
"\n\t\t TotalSize: {4}" +
"\n\t\t AvailableFreeSpace: {5}\n",
drive.Name, drive.VolumeLabel, drive.DriveType,
drive.DriveFormat, drive.TotalSize, drive.AvailableFreeSpace);
您可以为此使用 SystemInfo。它是一个命令行工具,可提供有关所有内容的信息。 http://technet.microsoft.com/en-us/library/bb491007.aspx
转储到文本文件
C:\systeminfo >>C:\a.txt
这应该生成包含信息的文件。
如果您想从 C# 应用程序调用此命令,您可以使用 System.Diagnostic.Process 启动一个进程来运行相同的命令并生成文件。