C#检索MAC地址,硬盘大小,内存,操作系统版本信息

时间:2013-02-12 22:31:56

标签: c#

我一直在使用Win32 Classes for Windows,并为基于Windows的计算机整理库存程序(显然)。

有没有办法通过程序收集系统信息并将信息转储到文本文件中?

我希望检索硬件信息(MAC地址,硬盘大小。 安装ram,OS版本等)

提前致谢

3 个答案:

答案 0 :(得分:1)

对于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 class的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();
}

答案 1 :(得分:0)

非常感谢您提出这个问题。我正在做一个相同的项目,这非常有帮助。

答案正是我所需要的。

我建议编辑winglerw28的SysInfo()函数的代码片段:

        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”引用应全部更改为“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",
                      drive.Name, drive.VolumeLabel, drive.DriveType,
                      drive.DriveFormat, drive.TotalSize, drive.AvailableFreeSpace);

答案 2 :(得分:-1)

您可以使用SystemInfo。它是一个命令行工具,提供有关所有内容的信息。 http://technet.microsoft.com/en-us/library/bb491007.aspx

转储到文本文件

C:\systeminfo >>C:\a.txt

这应该生成包含信息的文件。

如果要从C#应用程序调用此命令,则可以使用启动进程 System.Diagnostic.Process运行相同的命令,将生成文件。