C# Management 类获取本机各种信息
1. 添加
System.Management 的引用
2. 在cs代码中初始化引用
ManagementClass mc = new ManagementClass("引用的WMI库名称");
可供引用的WMI类库在MSDN中可查到:
http://msdn.microsoft.com/en-us/library/aa394084(v=VS.85).aspx
3. 获取WMI实例
ManagementObjectCollection moc= vNetworkAdapter.GetInstances();
这里获取到的是WMI实例集合,例如,获取网络适配器信息,这里会获取到无线连接、有线连接、1394连接等与网络连接有关的实例集合。
4. 循环个实例获取其属性
foreach (ManagementObject mo in moc)
{
//TODO: 获取各实例属性
//实例各属性、方法、解释也可在http://msdn.microsoft.com/en-us/library/aa394084(v=VS.85).aspx里查到
}
5. 修改
修改需要用到 ManagementObject.InvokeMethod(MethodName, ManagementBaseObject, InvokeMethodOptions ); 方法
MethodName 为要执行的方法名称的,也可在上面MSDN的链接中查到;
ManagementBaseObject 不好解释,官方解释为“包含管理对象的基本元素。用作管理更具体的管理对象类的基类。”
InvokeMethodOptions 执行附加选项,可以为NULL。
完整实例:
![](/assets/blank.gif)
ManagementObjectCollection moc = mc.GetInstances();
foreach (ManagementObject mo in moc)
{
//如果没有启用IP设置的网络设备则跳过
if (!(bool)mo["IPEnabled"])
continue;
// 获取属性
string caption = mo["Caption"].ToString(); //名称
string[] addresses = (string[])mo["IPAddress"]; //IP地址
string[] subnets = (string[])mo["IPSubnet"]; //子网掩码
string[] gateways = (string[])mo["DefaultIPGateway"]; //网关
string[] dnses = (string[])mo["DNSServerSearchOrder"]; //DNS
ManagementBaseObject newIP;
// 修改IP及子网掩码
newIP = mo.GetMethodParameters("EnableStatic");
newIP["IPAddress"] = new string[] { "192.168.2.51" };
newIP["SubnetMask"] = new string[] { "255.255.255.0" }; //修改IP同时,需要填写子网掩码
mo.InvokeMethod("EnableStatic", newIP, null);
// 设置网关地址
newIP = mo.GetMethodParameters("SetGateways");
newIP["DefaultIPGateway"] = new string[] { "192.168.2.1" };
mo.InvokeMethod("SetGateways", newIP, null);
// 设置DNS
newIP = mo.GetMethodParameters("SetDNSServerSearchOrder");
newIP["DNSServerSearchOrder"] = new string[] { "192.168.1.10" };
mo.InvokeMethod("SetDNSServerSearchOrder", newIP, null);
}
///获取cpu序列号///</summary>///<returns> string </returns>public string GetCpuInfo(){string strID = "";try{ManagementClass mc = new ManagementClass("Win32_Processor");ManagementObjectCollection moc = mc.GetInstances();foreach (ManagementObject mo in moc){strID = mo.Properties["ProcessorId"].Value.ToString();break;}}catch (Exception ex){throw new Exception("WMI:GetCpuInfo" + ex.ToString() + ex.Data.ToString()+ ex.HelpLink.ToString());}return strID;}/// <summary>/// 获取主板的编号/// </summary>/// <returns></returns>public string GetMainBoardID(){ManagementClass mc = new ManagementClass("Win32_BaseBoard");ManagementObjectCollection moc = mc.GetInstances();string strID = null;foreach (ManagementObject mo in moc){strID = mo.Properties["SerialNumber"].Value.ToString();break;}return strID;}/// <summary>/// 获取BIOS编号/// </summary>/// <returns></returns>public string GetBiosID(){ManagementClass mc = new ManagementClass("Win32_BIOS");ManagementObjectCollection moc = mc.GetInstances();string strID = null;foreach (ManagementObject mo in moc){strID = mo.Properties["SerialNumber"].Value.ToString();break;}return strID;}///<summary>/// 获取硬盘ID///</summary>///<returns> string </returns>public string GetHDid(){//ManagementClass mc = new ManagementClass("Win32_PhysicalMedia");网上有提到,用Win32_DiskDrive,但是用Win32_DiskDrive获得的硬盘信息中并不包含SerialNumber属性。 //ManagementObjectCollection moc = mc.GetInstances();//string strID = null;//foreach (ManagementObject mo in moc)//{// strID = mo.Properties["SerialNumber"].Value.ToString();// break;//} //return strID;const int MAX_FILENAME_LEN = 256;int retVal = 0;GetVolumeInformation("c:\\",null,MAX_FILENAME_LEN,ref retVal,0,0,null,MAX_FILENAME_LEN);return retVal.ToString("X"); }///<summary>/// 获取网卡硬件地址///</summary>///<returns> string </returns>public string GetMacAddress(){string MoAddress = "0000000000";using (ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration")){ManagementObjectCollection moc2 = mc.GetInstances();foreach (ManagementObject mo in moc2){if ((bool)mo["IPEnabled"] == true){MoAddress = mo["MacAddress"].ToString();MoAddress = MoAddress.Replace(":", "");}mo.Dispose();}}//NetworkInterface[] ntif = NetworkInterface.GetAllNetworkInterfaces();//if (ntif.Length > 0)//{// string temp = ntif[0].GetPhysicalAddress().ToString();//}return MoAddress.ToString();}
C# Management 类获取本机各种信息相关推荐
- QT学习:获取本机网络信息
获取本机网络信息,具体实现方法如下: (1)头文件"networkinformation.h"的具体代码如下: #include <QWidget> #include ...
- [Qt教程] 第35篇 网络(五)获取本机网络信息
[Qt教程] 第35篇 网络(五)获取本机网络信息 楼主 发表于 2013-9-5 11:32:58 | 查看: 278| 回复: 2 获取本机网络信息 版权声明 该文章原创于作者yafeilinu ...
- Qt网络获取本机网络信息
下面我们就讲解如何获取自己电脑的IP地址以及其他网络信息.这一节中,我们会涉及到网络模块(QtNetwork Module)中的QHostInfo ,QHostAddress ,QNetworkInt ...
- [转载]Qt之获取本机网络信息
原文地址:Qt之获取本机网络信息作者:一去丶二三里 经常使用命令行来查看一些计算机的配置信息. 1.首先按住键盘上的"开始键+R键",然后在弹出的对话框中输入"CMD&q ...
- [转载]Qt之获取本机网络信息_vortex_新浪博客
原文地址:Qt之获取本机网络信息作者:一去丶二三里 经常使用命令行来查看一些计算机的配置信息. 1.首先按住键盘上的"开始键+R键",然后在弹出的对话框中输入"CMD&q ...
- 第35篇 网络(五)获取本机网络信息
导语 前面讲完了HTTP和FTP,下面本来该讲解UDP和TCP了.不过,在讲解它们之前,我们先在这一节里讲解一个以后要经常用到的名词,那就是IP地址. 对于IP地址,其实,会上网的人都应该听说过它.如 ...
- CPUID获取本机CPU信息
CPUID获取本机CPU信息 目录 问题 分析 代码 运行结果 问题 请使用Visual Studio编写一个控制台程序,功能如下: 一.使用命令CPUInfo.exe -C读取本机CPU信息,并存储 ...
- qt获取本机全部ipv4_Qt之获取本机网络信息(MAC, IP等等,很全)
经常使用命令行来查看一些计算机的配置信息. 1.首先按住键盘上的"开始键+R键",然后在弹出的对话框中输入"CMD",回车 另外,还可以依次点击 开始>所 ...
- java使用siger 轻松获取本机硬件信息(CPU 内存 网络 io等)
1.下载sigar.jar sigar官方主页 sigar-1.6.4.zip 2.按照主页上的说明解压包后将相应的文件copy到java路径.比如windows32位操作系统需要将lib中sigar ...
最新文章
- linux shell awk 中 printf 用法
- jvm二:类加载,连接,初始化
- 初探swift语言的学习笔记三(闭包-匿名函数)
- 关键字—final static const的区别
- 韦东山衔接班——4.4_构建根文件系统之构建根文件系统
- 前端每日实战:163# 视频演示如何用原生 JS 创作一个多选一场景的交互游戏(内含 3 个视频)...
- ConsumerNetworkClient 分析
- (python)数据结构------列表
- js alert 封装 layui
- Python程序发布(打包)及pyInstaller、cx_Freeze工具使用介绍
- 项目管理系统TOP10,好用的产品研发项目管理系统都在这里了
- 数据安全与分类分级、敏感信息定义与分级分类标准
- 1987:【20CSPS提高组】括号树P5658 [CSP-S2019] 括号树
- 【消费者心理与行为(第6版)】第7章 消费者的需要与购买动机
- 微信公众号如何嵌入照片征集视频征集小程序
- 颜色值透明度的百分数对应十六进制表
- Long类型转为String类型
- 有史以来最牛逼的一张程序员职业路线图,分享给你
- 浅入浅出代理模式与Spring事务管理
- 微信小程序发送服务通知
热门文章
- html5 星空,用canvas实现简单的星空效果
- 什么是私有地址?如何分类?
- 游戏建模‖那些你找工作时不明白的事
- python twisted安装_windows python twisted下载 安装 使用
- dijkstra 算法_数据结构与算法—单源最短路径dijkstra算法
- 宝塔服务器重启后redis启动报错pid file is exits
- 计算机无法启用媒体流,电脑流媒体打不开怎么回事?电脑打开媒体流的方法
- 程序人生 - 程序员高情商的聊天技巧
- 正则匹配:match()、test()函数区别
- [翻译] 在 Overleaf 上使用 xr 包来交叉引用