C#:基于WDK和WMI获取机器指纹

来源:互联网 发布:人像变卡通软件 编辑:程序博客网 时间:2024/04/27 16:02
同系列文章:
  • VC:基于WDK和WMI获取机器指纹
  • C#:基于WDK和WMI获取机器指纹
功能描述:
  1. 实现基于WDK获取网卡原生Mac地址
  2. 实现基于WMI获取网卡原生Mac地址、硬盘序列号、CPU ID
  3. 实现基于WDK获取系统所有设备的VID和PID
源代码出售:
sell
价格:壹仟元人民币
QQ:36748897
动态库及测试程序下载:
HWiNFO CS 2014-04-07.zip

HWiNFO类公开方法

/* ---------------------------------------------------------- * 文件名称:HWiNFO.cs *  * 作者:秦建辉 *  * QQ:36748897 *  * 博客:http://www.firstsolver.com/wordpress/ *  * 开发环境: *      Visual Studio V2013 *      .NET Framework 4 Client Profile *       * 版本历史: *      V1.02014年04月06日 *              实现基于WMI获取网卡原生MAC地址、硬盘序列号、CPU ID *              实现基于WDK获取网卡原生MAC地址 *              实现结合设备安装类GUID和设备接口类GUID获取设备VIDPID------------------------------------------------------------ */using System;using System.Collections.Generic;using System.Management;using System.Runtime.InteropServices;using System.Text;namespace Splash{    [StructLayout(LayoutKind.Sequential)]    public struct T_VIDPID    {        public UInt16 VendorID;     // 供应商标识        public UInt16 ProductID;    // 产品编号    }    public static class HWiNFO    {        /// <summary>        /// 基于WMI获取设备属性值        /// </summary>        /// <param name="QueryIndex">要查询的属性值索引</param>        /// <returns>属性值集合</returns>        /// <remarks>        ///     QueryIndex其值含义如下:        ///         0:网卡原生MAC地址(剔除虚拟网卡)        ///         1:网卡原生MAC地址(剔除虚拟网卡和USB网卡)        ///         2:硬盘序列号        ///         3:主板序列号        ///         4:CPU ID        ///         5:BIOS序列号        ///         6:主板型号        ///         7:网卡当前MAC地址(剔除虚拟网卡)        ///         8:网卡当前MAC地址(剔除虚拟网卡和USB网卡)        /// </remarks>        public static String[] WMI_DeviceQuery(Int32 QueryIndex);                /// <summary>        /// 查看系统中是否存在指定标识的硬件设备        /// </summary>        /// <param name="CPUID">处理器标识,可以为空</param>        /// <param name="HardDiskSerialNumber">硬盘序列号,可以为空</param>        /// <param name="MacAddress">网卡MAC地址(已剔除虚拟网卡和USB网卡),可以为空</param>        /// <returns>        ///     true:匹配成功        ///     false:匹配失败        /// </returns>        /// <remarks>        ///     说明:        ///         对设备标识不区分大小写        ///         空项不做判断,非空项必须全部满足        /// </remarks>        public static Boolean WMI_DeviceMatch(String CPUID, String HardDiskSerialNumber, String MacAddress);                /// <summary>        /// 输出硬件信息到指定INI文件        /// </summary>        /// <param name="iniFileName">要保存的ini文件名</param>        /// <returns>        ///     true:成功        ///     false:失败        /// </returns>        public static Boolean WMI_DeviceInfoPrint(String iniFileName);        /// <summary>        /// 结合设备安装类GUID和设备接口类GUID获取设备VIDPID        /// </summary>        /// <param name="SetupClassGuid">设备安装类GUID,Empty忽视</param>        /// <param name="InterfaceClassGuid">设备接口类GUID,Empty忽视</param>        /// <returns>设备VIDPID列表</returns>        /// <remarks>        ///     优点:直接通过设备实例ID提取VIDPID,从而无需获取设备路径来读写IO        /// </remarks>        public static T_VIDPID[] WDK_QueryVidPid(Guid SetupClassGuid, Guid InterfaceClassGuid);                /// <summary>        /// 验证设备的VIDPID        /// </summary>        /// <param name="VendorID">设备VID</param>        /// <param name="ProductID">设备PID</param>        /// <param name="SetupClassGuid">设备安装类GUID,Empty忽视</param>        /// <param name="InterfaceClassGuid">设备接口类GUID,Empty忽视</param>        /// <returns>        ///     true:匹配成功        ///     false:匹配失败        /// </returns>        public static Boolean WDK_VIDPIDMatch(UInt16 VendorID, UInt16 ProductID, Guid SetupClassGuid, Guid InterfaceClassGuid);                /// <summary>        /// 输出VIDPID信息到指定INI文件        /// </summary>        /// <param name="iniFileName">要保存的ini文件名</param>        /// <returns>        ///     true:成功        ///     false:失败        /// </returns>        public static Boolean WDK_VIDPIDPrint(String iniFileName);         /// <summary>        /// 通过WDK获取网卡原生MAC地址        /// </summary>        /// <param name="isIncludeUSB">是否包含USB网卡,默认不包含USB网卡</param>        /// <returns>获取到的网卡原生MAC地址集合</returns>        public static String[] WDK_QueryMacAddress(Boolean isIncludeUSB = false);        /// <summary>        /// 查看系统中是否存在指定标识的硬件设备        /// </summary>        /// <param name="CPUID">处理器标识,可以为空</param>        /// <param name="HardDiskSerialNumber">硬盘序列号,可以为空</param>        /// <param name="MacAddress">网卡MAC地址(已剔除虚拟网卡和USB网卡),可以为空</param>        /// <returns>        ///     true:匹配成功        ///     false:匹配失败        /// </returns>        /// <remarks>        ///     说明:        ///         对设备标识不区分大小写        ///         空项不做判断,非空项必须全部满足        /// </remarks>        public static Boolean WDK_DeviceMatch(String CPUID, String HardDiskSerialNumber, String MacAddress);        /// <summary>        /// 输出硬件信息到指定INI文件        /// </summary>        /// <param name="iniFileName">要保存的ini文件名</param>        /// <returns>        ///     true:成功        ///     false:失败        /// </returns>        public static Boolean WDK_DeviceInfoPrint(String iniFileName);    }}

测试软件界面:

HWiNFO-3HWiNFO-4

0 0