using System;

using System.Management; //还需要引用;

using System.Collections;

using System.Collections.Specialized;

using System.Text;

namespace WindowsFormsApplication1
{

#region WMIPath
    public enum WMIPath
    {

// 硬件

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, // 已安装的网络协议

}

#endregion

/// <summary>

/// 获取系统信息

/// </summary>

/// <example>

/// <code>

/// WMI w = new WMI(WMIPath.Win32_NetworkAdapterConfiguration);

/// for (int i = 0; i < w.Count; i ++)

/// {

/// if ((bool)w[i, "IPEnabled"])

/// {

/// Console.WriteLine("Caption:{0}", w[i, "Caption"]);

/// Console.WriteLine("MAC Address:{0}", w[i, "MACAddress"]);

/// }

/// }

/// </code>

/// </example>

public sealed class WMI
    {

private ArrayList mocs;

private StringDictionary names; // 用来存储属性名,便于忽略大小写查询正确名称。

/// <summary>

/// 信息集合数量

/// </summary>

public int Count
        {

get { return mocs.Count; }

}

/// <summary>

/// 获取指定属性值,注意某些结果可能是数组。

/// </summary>

public object this[int index, string propertyName]
        {

get
            {

try
                {

string trueName = names[propertyName.Trim()]; // 以此可不区分大小写获得正确的属性名称。

Hashtable h = (Hashtable)mocs[index];

return h[trueName];

}

catch
                {

return null;

}

}

}

/// <summary>

/// 返回所有属性名称。

/// </summary>

/// <param name="index"></param>

/// <returns></returns>

public string[] PropertyNames(int index)
        {

try
            {

Hashtable h = (Hashtable)mocs[index];

string[] result = new string[h.Keys.Count];

h.Keys.CopyTo(result, 0);

Array.Sort(result);

return result;

}

catch
            {

return null;

}

}

/// <summary>

/// 返回测试信息。

/// </summary>

/// <returns></returns>

public string Test()
        {

try
            {

StringBuilder result = new StringBuilder(1000);

for (int i = 0; i < Count; i++)
                {

int j = 0;

foreach (string s in PropertyNames(i))
                    {

result.Append(string.Format("{0}:{1}={2}\n", ++j, s, this[i, s]));

if (this[i, s] is Array)
                        {

Array v1 = this[i, s] as Array;

for (int x = 0; x < v1.Length; x++)
                            {

result.Append("\t" + v1.GetValue(x) + "\n");

}

}

}

result.Append("======WMI=======\n");

}

return result.ToString();

}

catch
            {

return string.Empty;

}

}

/// <summary>

/// 构造函数

/// </summary>

/// <param name="path"></param>

public WMI(string path)
        {

names = new StringDictionary();

mocs = new ArrayList();

try
            {

ManagementClass cimobject = new ManagementClass(path);

ManagementObjectCollection moc = cimobject.GetInstances();

bool ok = false;

foreach (ManagementObject mo in moc)
                {

Hashtable o = new Hashtable();

mocs.Add(o);

foreach (PropertyData p in mo.Properties)
                    {

o.Add(p.Name, p.Value);

if (!ok) names.Add(p.Name, p.Name);

}

ok = true;

mo.Dispose();

}

moc.Dispose();

}

catch (Exception e)
            {

throw new Exception(e.Message);

}

}

/// <summary>

/// 构造函数

/// </summary>

/// <param name="path"></param>

public WMI(WMIPath path)
            : this(path.ToString())
        {

}

}

}

项目应用实例 判断每个应用程序是否运行 原理 cpu 中 查找进程是否运行:

public class HardWare
    {
        #region MachineValidity
        public static bool MachineValidity(string cpuID)
        {
            ManagementClass myCpu = new ManagementClass("win32_Processor");
            ManagementObjectCollection myCpuConnection = myCpu.GetInstances();
            foreach (ManagementObject myObject in myCpuConnection)
            {
                if (myObject.Properties["Processorid"].Value != null)
                {
                    if (myObject.Properties["Processorid"].Value.ToString() == cpuID)
                        return true;
                }
            }
            return false;
        }
        #endregion
        public static bool ProductValidity(string productKey)
        {
            if (productKey == "Infecon123456$@#")
            {
                return true;
            }
            else
            {
                return false;
            }
        }
       
    }

ManagementClass类|获取系统硬件配置相关推荐

  1. ManagementClass类|获取系统硬件配置(2)

    using System; using System.Management; //还需要引用; using System.Collections; using System.Collections.S ...

  2. C/C++通过WMI和系统API函数获取获取系统硬件配置信息(转)

    前段时间由于项目需要,要求做一个服务器的实时性能监控(CPU.内存.网络利用率等)和读取服务器的硬件配置参数的接口供项目组使用,就是一个类似于鲁大师之类的东东吧... 当然第一想法肯定是利用Windo ...

  3. 称重管理系统如何修改重量_无人值守称重系统硬件配置和作用

    1. 视频监控抓拍 系统软件配合设摄像头在保存数据的同时抓拍,防止车辆或者人为的舞弊行为 2. 红外定位 在地磅否的两侧各安装一对红外对射,通过信号线连接到开关,当红外的光束被阻挡时,红外定位系统将自 ...

  4. python获取系统硬件信息

    python获取系统硬件信息 github项目 https://github.com/giampaolo/psutil cpu,内存,etc.

  5. Python获取电脑硬件配置的封装类,可以获取CPU序列号、主板序列号、BIOS序列号、硬盘序列号和网卡MAC地址

    Python获取电脑硬件配置的封装类,可以获取CPU序列号.主板序列号.BIOS序列号.硬盘序列号和网卡MAC地址. myPyHardware.py # -*- coding: utf-8 -*- i ...

  6. 使用Calender类获取系统时间和时间和运算

    使用Calender类获取系统时间和时间和运算: 1 @Test 2 public void testCal(){ 3 //使用Calender对象获取时间,并对时间进行计算: 4 Calendar ...

  7. C/C++通过WMI和系统API函数获取获取系统硬件(cpu,内存,显卡,网卡)配置信息

     转自:http://blog.csdn.net/ly402609921/article/details/7446943 前段时间由于项目需要,要求做一个服务器的实时性能监控(CPU.内存.网络利 ...

  8. Android 使用Calendar类获取系统时间

    Android 获取系统时间: 1.定义变量 private int mYear;private int mMonth;private int mDay;private int mHour;priva ...

  9. php获取电脑硬件配置,如何查看电脑硬件配置

    一,利用DirectX诊断工具查看硬件配置 DirectX诊断工具可以帮助我们对硬件工作情况作出测试.诊断并进行修改,当然我们也可以利用它来查看机器的硬件配置.运行"系统信息"窗口 ...

最新文章

  1. ​网页图表Highcharts实践教程之标签组与载入动画
  2. 上下定高 中间自适应_联合首发|医药供应链平台一块医药获新一轮融资,赋能产业上下游提质增效...
  3. 都2021年了,不会还有人连深度学习都不了解吧(三)- 损失函数篇
  4. arch Linux 添加引导,ArchLinux 添加开机启动脚本, 亲测
  5. UltraEdit 常用快捷方式
  6. 【新用户专享】腾讯云发车,360元三年1核2G云服务器
  7. nt服务器需要的协议,构建没有NT服务器的NT域
  8. 【免费毕设】asp.netERP客户管理系统的实现(源代码+lunwen)
  9. hdu 4496 并查集
  10. 小米多主题思路分析-重定向资源篇
  11. 引导扇区维护工具linux,bootice引导扇区维护工具(bootice1.3.4新版及1.3.3经典版)...
  12. matlab 元胞数组
  13. Eslint报错extra semicolon的解决方法
  14. c语言 程序设计一篇,用c语言编程任务br/请编写一个程序,从输入中读取一篇中文文 爱问知识人...
  15. html5控制gif速度,用gifsicle优化GIF动图
  16. java线程锁有哪几种_Java锁有哪些种类,以及区别
  17. hbase1.2.1配置kerberos
  18. Spring Boot启动参考指南(官方版)
  19. ElementUI Collapse 折叠面板
  20. 用java编写中国象棋_如何用Java实现网络中国象棋室(一)

热门文章

  1. iAP Cracker for iPhone/iPod/iPad
  2. 利用Oracle Map Builder将shapefile导入到oracle数据库
  3. 算法之「迪杰斯特拉(Dijkstra)算法」
  4. HashMap使用containsKey问题
  5. 带有Jersey的JAX-RS教程,用于RESTful Web服务
  6. 冒泡法和选择法 排序算法实现
  7. HTML5期末大作业:商城网站设计——防锤子手机商城官网首页模板(HTML+CSS+JavaScript ) 电商网页HTML代码...
  8. postgresql 的 show create table 命令
  9. 2.3阿里巴巴与四十大盗 背包问题
  10. python turtle绘图多个实例