欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

C#获取设备信息

程序员文章站 2022-06-12 17:13:09
...

参考文档:https://msdn.microsoft.com/en-us

1、获取设备信息

/// <summary>
/// 获取系统信息的公共方法
/// </summary>
/// <param name="objquery">查询语句</param>
/// <param name="infoname">系统信息字段</param>
/// <returns></returns>
public static string getSystemInfoObject(ObjectQuery objquery, string infoname)
{
   try
   {
       ManagementObjectSearcher searcher = new ManagementObjectSearcher(objquery);
       var systeminfo = "";
       foreach (ManagementObject mo in searcher.Get())
       {
           systeminfo = mo[infoname].ToString();
       }
       return systeminfo;
   }
   catch
   {
       return "";
   }
}

// PC***
public static string getPCNumber()
{
    ObjectQuery objquery = new ObjectQuery("Select * From Win32_BIOS");
    string infoname = "SerialNumber";
    return getSystemInfoObject(objquery, infoname);
}

// 计算机名  
public static string getPCName()
{
    return Environment.MachineName;
}

// 磁盘***
public static string getDiskNumber()
{
    ObjectQuery objquery = new ObjectQuery("Select * From Win32_DiskDrive");//Win32_PhysicalMedia
    string infoname = "SerialNumber"; //SerialNumber
    return getSystemInfoObject(objquery, infoname);
}

//磁盘驱动器
public static string getDisks()
{
     ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_DiskDrive");
     var disks = "";
     foreach (ManagementObject mo in searcher.Get())
     {
          disks += mo["Caption"].ToString() + ";";
     }
     return disks;
}  

// 操作系统  
public static string getPCSystem()
{
    ObjectQuery objquery = new ObjectQuery("select * from Win32_OperatingSystem");
    string infoname = "Name";
    return getSystemInfoObject(objquery, infoname);
}
// 操作系统位数
public static string getPCBit()
{
    ObjectQuery objquery = new ObjectQuery("select * from Win32_OperatingSystem");
    string infoname = "OSArchitecture";
    return getSystemInfoObject(objquery, infoname);
}
// 操作系统语言
public static string getPCLanguage()
{
    return CultureInfo.InstalledUICulture.NativeName;
}

//PC模块
public static string getPCType()
{
    ObjectQuery objquery = new ObjectQuery("select * from Win32_ComputerSystem");
    string infoname = "Model";
    return getSystemInfoObject(objquery, infoname);
}

// CPU
public static string getPCCPU()
{
    ObjectQuery objquery = new ObjectQuery("select * from Win32_Processor");
    string infoname = "Name";
    return getSystemInfoObject(objquery, infoname);
}

// 内存
public static string getPCMemory()
{
    ObjectQuery objquery = new ObjectQuery("select * from Win32_ComputerSystem");
    string infoname = "TotalPhysicalMemory"; 
    return getSystemInfoObject(objquery, infoname);
}

//硬盘
public static string getPCDisk()
{
     long lsum = 0;
     foreach (DriveInfo drive in DriveInfo.GetDrives())
     {
        //判断是否是固定磁盘  
        if (drive.DriveType == DriveType.Fixed)
        {
            lsum += drive.TotalSize;
        }
     }
     var disk = lsum / (1024 * 1024 * 1024);
     if (disk > 300)
     {
         return "SSD " + disk.ToString();
     }
     else
     {
          return "HDD " + disk.ToString();
     }
}

string biosnumber = Device.getPCNumber();//获取PC*** 
string name = Device.getPCName();//获取计算机名  
string pcsystem = Device.getPCSystem();
string bit = Device.getPCBit();
string language = Device.getPCLanguage();
string systembitlanguage = pcsystem.Split('|')[0] + " " + bit + " " + language.Split('(')[0];//获取操作系统+位数+语言
string type = Device.getPCType();//PC模块类型
string cpu = Device.getPCCPU();//获取CPU
string pcmemory = Device.getPCMemory();
var memory = float.Parse(pcmemory) / 1024 / 1024 / 1024 + "G";//获取内存
string disk = Device.getPCDisk() + "GB";//获取磁盘

var systeminfo = biosnumber + "\n" + name + "\n" + type + "\n" + systembitlanguage + "\n";
systeminfo += cpu + "\n" + memory + "\n" + disk + "\n";
MessageBox.Show(systeminfo);

执行结果:
C#获取设备信息

调用ManagementObjectSearcher实例中的Get()方法,在ManagementObject中的对象中获取我们想要的数据,在https://msdn.microsoft.com/en-us搜索(如Win32_Processor)即可查看到对应的属性名

// 硬件  
Win32_Processor, // CPU 处理器  
Win32_PhysicalMemory, // 物理内存条  
Win32_Keyboard, // 键盘  
Win32_PointingDevice, // 点输入设备,包括鼠标。  
Win32_FloppyDrive, // 软盘驱动器  
Win32_DiskDrive, // 硬盘驱动器  
Win32_CDROMDrive, // 光盘驱动器  
Win32_BaseBoard, // 主板  
Win32_BIOS, // BIOS 芯片  
Win32_ParallelPort, // 并口  
Win32_SerialPort, // 串口  
Win32_SerialPortConfiguration, // 串口配置  
Win32_SoundDevice, // 多媒体设置,一般指声卡。  
Win32_SystemSlot, // 主板插槽 (ISA & PCI & AGP)  
Win32_USBController, // USB 控制器  
Win32_NetworkAdapter, // 网络适配器  
Win32_NetworkAdapterConfiguration, // 网络适配器设置  
Win32_Printer, // 打印机  
Win32_PrinterConfiguration, // 打印机设置  
Win32_PrintJob, // 打印机任务  
Win32_TCPIPPrinterPort, // 打印机端口  
Win32_POTSModem, // MODEM  
Win32_POTSModemToSerialPort, // MODEM 端口  
Win32_DesktopMonitor, // 显示器  
Win32_DisplayConfiguration, // 显卡  
Win32_DisplayControllerConfiguration, // 显卡设置  
Win32_VideoController, // 显卡细节。  
Win32_VideoSettings, // 显卡支持的显示模式。  

// 操作系统  
Win32_TimeZone, // 时区  
Win32_SystemDriver, // 驱动程序  
Win32_DiskPartition, // 磁盘分区  
Win32_LogicalDisk, // 逻辑磁盘  
Win32_LogicalDiskToPartition, // 逻辑磁盘所在分区及始末位置。  
Win32_LogicalMemoryConfiguration, // 逻辑内存配置  
Win32_PageFile, // 系统页文件信息  
Win32_PageFileSetting, // 页文件设置  
Win32_BootConfiguration, // 系统启动配置  
Win32_ComputerSystem, // 计算机信息简要  
Win32_OperatingSystem, // 操作系统信息  
Win32_StartupCommand, // 系统自动启动程序  
Win32_Service, // 系统安装的服务  
Win32_Group, // 系统管理组  
Win32_GroupUser, // 系统组帐号  
Win32_UserAccount, // 用户帐号  
Win32_Process, // 系统进程  
Win32_Thread, // 系统线程  
Win32_Share, // 共享  
Win32_NetworkClient, // 已安装的网络客户端  
Win32_NetworkProtocol, // 已安装的网络协议