C# 通过VMI接口获取硬件ID
使用C#语言实现通过VMI(虚拟机监控器)接口来获取硬件ID的过程。VMI是一种用于虚拟化环境的接口,用于管理虚拟机和宿主机之间的通信和资源共享。具体实现中,需要通过添加System.Management命名空间的引用来访问VMI接口,然后使用其中的类和方法来获取硬件ID。此外,需要借助一些系统API来处理数据,如使用ManagementObjectSearcher类和ManagementObjectCollection类获取系统信息并对其进行过滤。
实现代码:
class HardWareInfo
{
/// <summary>
/// 获取 CPUID , 更多 cpu 信息参考
/// </summary>
/// <returns> cpuid </returns>
public static string GetCpuId()
{
string cpuid = "";
try
{
ManagementObjectSearcher searcher = new ManagementObjectSearcher("Select * From Win32_Processor");
foreach (ManagementObject mo in searcher.Get())
{
cpuid = mo.Properties["ProcessorId"].Value.ToString();
break;
}
}
catch
{
}
return cpuid;
}
/// <summary>
/// 获取硬盘序列号
/// </summary>
/// <returns> 硬盘序列号 </returns>
public static string GetDiskSerialNumber()
{
string HDid = "";
try
{
ManagementObjectSearcher searcher = new ManagementObjectSearcher("Select * From Win32_DiskDrive");
foreach (ManagementObject mo in searcher.Get())
{
HDid = (string)mo.Properties["SerialNumber"].Value;
break;
}
}
catch
{
}
return HDid;
}
/// <summary>
/// 获取硬盘产品型号
/// </summary>
/// <returns>硬盘产品型号</returns>
public static string GetDiskModelNumber()
{
string HDid = "";
try
{
ManagementObjectSearcher searcher = new ManagementObjectSearcher("Select * From Win32_DiskDrive");
foreach (ManagementObject mo in searcher.Get())
{
HDid = (string)mo.Properties["Model"].Value;
break;
}
}
catch
{
}
return HDid;
}
/// <summary>
/// 获取 Mac 地址 ,更多网卡信息参考 :
/// </summary>
/// <returns> Mac 地址 </returns>
public static string GetMacAddress()
{
string mac = "";
try
{
ManagementObjectSearcher searcher = new ManagementObjectSearcher("Select * From Win32_NetworkAdapterConfiguration");
foreach (ManagementObject mo in searcher.Get())
{
if ((bool)mo["IPEnabled"] == true)
{
mac = mo["MacAddress"].ToString();
break;
}
}
}
catch
{
}
return mac;
}
/// <summary>
/// 获取 ip 地址
/// </summary>
/// <returns> ip 地址 </returns>
public static string GetIpAddress()
{
string st = "";
try
{
ManagementObjectSearcher searcher = new ManagementObjectSearcher("Select * From Win32_NetworkAdapterConfiguration");
foreach (ManagementObject mo in searcher.Get())
{
if ((bool)mo["IPEnabled"] == true)
{
System.Array ar;
ar = (System.Array)(mo.Properties["IpAddress"].Value);
st = ar.GetValue(0).ToString();
break;
}
}
}
catch
{
}
return st;
}
/// <summary>
/// 获取主板序列号
/// </summary>
/// <returns> 主板序列号 </returns>
public static string GetBIOSSerialNumber()
{
string sBIOSSerialNumber = "";
try
{
ManagementObjectSearcher searcher = new ManagementObjectSearcher("Select * From Win32_BIOS");
foreach (ManagementObject mo in searcher.Get())
{
sBIOSSerialNumber = mo.GetPropertyValue("SerialNumber").ToString().Trim();
break;
}
}
catch
{
}
return sBIOSSerialNumber;
}
}
C# 通过VMI接口获取硬件ID的更多相关文章
- 【Azure Developer】Python 获取Micrisoft Graph API资源的Access Token, 并调用Microsoft Graph API servicePrincipals接口获取应用ID
问题描述 在Azure开发中,我们时常面临获取Authorization问题,需要使用代码获取到Access Token后,在调用对应的API,如servicePrincipals接口. 如果是直接调 ...
- C#获取CPU等硬件ID(转载)
System.Management命名空间提供对大量管理信息和管理事件集合的访问,这些信息和事件是与根据 Windows 管理规范 (WMI) 结构对系统.设备和应用程序设置检测点有关的.应用程序和服 ...
- Atitit.获取主板与bios序列号获取硬件设备信息 Wmi wmic 的作用
Atitit.获取主板与bios序列号获取硬件设备信息 Wmi wmic 的作用 1 获取硬件核心基础核心基础Wmi1 2 其他资料2 3 Wmic WMI 命令行接口2 4 Atitit.获取主板 ...
- linux系统从pci.ids文件获取硬件设备详细厂商信息
机器采样: [root@ht24 hwdata]# cat /etc/redhat-release ; uname -r CentOS Linux release 7.9.2009 (Core) 3. ...
- 通过Zabbix API实现对主机的增加(无主机资产的添加和带主机资产的添加)、删除、获取主机id、获取模板id、获取组id
config.yaml存储zabbix的信息(主要包括zabbix server的url .请求头部.登陆的用户名密码) Zabbix_Config: zabbix_url: http://192.1 ...
- Fortran一个获取硬件系统信息的函数库
此函数库提供了 Visual Fortran 上获取硬盘ID,CPU编号,windows安装时间及文件头部校验的四个函数.可用于简单的程序加密.(但切勿用于商业性很强的地方) ...
- WebElement接口获取值
通过WebElement接口获取值 size 获取元素的尺寸 text 获取元素的文本 get_attribute(name) 获取属性值 location 获取元素坐标,先找到要获取的元素,再调用该 ...
- 使用HD/IDE层的ioctl接口获取磁盘容量get_hdd_max_sector
利用HD/IDE layer的ioctl函数接口获取HD/IDE的磁盘容量.HDIO_DRIVE_TASK 能发出訪问LBA地址的命令.但不能读写数据. #include <stdio.h&g ...
- Vue学习笔记十三:Vue+Bootstrap+vue-resource从接口获取数据库数据
目录 前言 SpringBoot提供后端接口 Entity类 JPA操作接口 配置文件 数据库表自动映射,添加数据 写提供数据的接口 跨域问题 前端修改 效果图 待续 前言 Vue学习笔记九的列表案例 ...
- linux下dmidecode命令获取硬件信息
linux下dmidecode命令获取硬件信息 2 A+ 所属分类:Linux 运维工具 dmidecode在 Linux 系统下获取有关硬件方面的信息.dmidecode 遵循 SMBIOS/DMI ...
随机推荐
- c#-微软
1)使用c#编写第一个程序简介: c#编程语言允许你构建多种类型的应用程序,例如: 用于捕获,分析和处理数据的业务应用程序 可从Web浏览器访问的动态Web应用程序 2D和3D游戏 金融和科研应用程序 ...
- 【HZERO】值集翻译
值集翻译 值集管理: https://open.hand-china.com/document-center/doc/component/163/16090?doc_id=156008&doc ...
- Cpp 值的种类划分
本博文会介绍移动语义的形式术语和规则.并且会正式的介绍值的类别,如 lvalue.rvalue.prvalue和 xvalue,并讨论了在绑定对象引用时的作用.也会讨论移动语义不会自动传递的细节,以及 ...
- 一次完整的HTTP服务过程
- 基于 SpringBoot + Vue3.2 + Element Plus 的后台管理系统
简介 TANSCI 基于 SpringBoot + Vue3.2 + Element Plus 的后台管理系统. 包含基础模块:菜单管理.角色管理.组织管理.用户管理.字典管理.日志管理(操作日志.异 ...
- springBoot 整合 hikari
Hikari是一款非常强大,高效,并且号称"史上最快连接池".并且在springboot2.0之后,采用的默认数据库连接池就是Hikari.不需要引入依赖,已经在SpringBoo ...
- java占位符%d,%s等的使用
(转载自:http://www.cnblogs.com/happyday56/p/3996498.html) String类的format()方法用于创建格式化的字符串以及连接多个字符串对象.熟悉C语 ...
- 06-verilog基础语法_5
How to build and test a module parameter defparam修改参数 Task & function Task Function function不可以调 ...
- 【TouchGFX】IAR 下实现 touchgfx Caching Bitmaps 通过文件方式获取图像资源
1.Caching Bitmaps 修改缓存方式 2.修改 blockCopy 方法(注意:忘记返回状态导致发生错误) 3.修改分散文件将位于 ExtFlashSection section 数据重定 ...
- 神通数据库的varchar和nvarchar的验证
神通数据库的varchar和nvarchar的验证 登录神通数据库 isql 注意 神通数据库的默认密码是 szoscar55 Welcome to isql 2.0.56 interactive t ...