在.NET中轻松获取系统信息(1) -WMI篇

在.NET中轻松获取系统信息(1) -WMI篇

Montaque

申明:

1、个人的一点心得,仅供参考
2、转载时候,请保留原本。

概述:

不知道大家有没有这种体会?有时候为了获取系统一点点信息,比如考虑一下操作系统的版本号,或者当前屏幕的分辨率。其实说到底就是读操作系统某个方面的一个属性值而已,然后就看到我们的程序中密密麻麻的Win32 API申明,调用,代码的可读性和维护性不言而喻。到了.NET,微软提供了更为丰富的类,有很多以前要调用API的方法可以在.NET中轻而易举的调用实现。今天简单介绍一个在.NET中如何通过与WMI(Windows 管理规范)的通讯,从而得到获取信息的目的。

主要思路:

举一个获取操作系统共享目录和获取主板号的例子,介绍如何利用System.Managment下面的类获取系统相关的信息:

正文:

WMI(Windows管理规范:Windows Management Instrumentation)是Microsoft基于Web的企业管理(WBEM)的实现,同时也是一种基于标准的系统管理接口。WMI最早出现在Microsoft Windows 2000系统上,但它同样可以安装在Windows NT 4和Windows 9x计算机上。WMI是一种轻松获取系统信息的强大工具。

在.NET中,有一个System.Management名空间(系统默认没有引用,我们可以手动添加引用),通过下面的Class的操作,可以查询系统软硬件的信息,先看一个简单的例子:

Imports System.Management

Dim searcher As New ManagementObjectSearcher("SELECT * FROM Win32_share")

Dim share As ManagementObject

For Each share In searcher.Get()

MessageBox.Show(share.GetText(TextFormat.Mof))

Next share

运行的结果是列出了所有系统当前共享的目录、以及描述等等。

分析一下上面的代码,可以看到一下几点:

1、似乎是在进行数据库操作,有点像SQL语句。其实就是SQL操作,这种语句被成WQL(WMI Query Language),实际上是标准SQL的一个子集加上了WMI的扩展.

2、WQL是个只读的查询语言,我们只能查询响应的数据,不能用UPDATE,INSERT等更新操作

3、代码很简单、通俗易懂

4、我们采用了一种MOF(托管对象格式)的显示。

例子二:获取当前主板的信息

上面的例子是一个软件方面的信息,下面看一个获取硬件信息的例子,获取主板的序列号以及制造商:

Dim searcher As New ManagementObjectSearcher("SELECT * FROM Win32_BaseBoard")

Dim share As ManagementObject

For Each share In searcher.Get()

Debug.WriteLine("主板制造商:" & share("Manufacturer"))

Debug.WriteLine("型号:" & share("Product"))

Debug.WriteLine("序列号:" & share("SerialNumber"))

Next share

总结以及补充:

WMI类也是分层次的,具体可以参考msdn中的WMI;转向.NET平台开发的时候,最好能多看一些关于.NET新特性的介绍,这样可以大幅度的提升代码的开发效率以及运行效率。

时间: 2024-11-03 21:48:03

在.NET中轻松获取系统信息(1) -WMI篇的相关文章

在.NET中轻松获取系统信息(1) -WMI篇 Montaque(原作)

在.NET中轻松获取系统信息(1) -WMI篇    Montaque(原作)    关键字     WMI,WQL,ManagementObjectSearcher    在.NET中轻松获取系统信息(1) -WMI篇 Montaque 申明:     1.个人的一点心得,仅供参考    2.转载时候,请保留原本. 概述:        不知道大家有没有这种体会?有时候为了获取系统一点点信息,比如考虑一下操作系统的版本号,或者当前屏幕的分辨率.其实说到底就是读操作系统某个方面的一个属性值而已,

教你在Java的普通类中轻松获取Session以及request中保存的值

  曾经有多少人因为不知如何在业务类中获取自己在Action或页面上保存在Session中值,当然也包括我,但是本人已经学到一种办法可以解决这个问题,来分享下,希望对你有多多少少的帮助!   如何在Java的普通类中获取Session以及request对象 详细回答请见:http://www.zhangriguang.cn/blog/20121010123838.html

java中如何获取系统信息如cpu主频和cpu利用率

问题描述 实验室里的一个基于服务计算的863课题为了让个计算资源均衡,要知道各个机器的配置情况可当前资源利用率,主要是cpu主频.占用率:内存大小.可用内存大小.项目使用的是j2ee,但是由于java是在虚拟机上运行的缘故,这些和系统相关的信息可能无法直接获得,例Runtime.totalMemory()和Runtime.freeMemery()返回的仅是关于虚拟机的内存信息.请问高手:1.Java中是否提供了相关的api?2.若否,是不是可以利用JNI提供的和c相关的接口,间接地用c去获取相关

Windows XP中轻松获取未使用的IP地址的批处理文件_应用技巧

在我们解决Windows 操作系统的DHCP故障时,有时要找出某个地址范围内有哪些地址没有被使用.只需建立一个批处理文件,要求它只返回那些未用的IP地址,然后再将命令的结果输入到一个文本文件中. 作为网管员,在我们解决Windows 操作系统的DHCP故障时,有时要找出某个地址范围内有哪些地址没有被使用.本人以前介绍过一种方法:打开命令提示窗口,在For-in-Do循环中调用ping命令.例如,为了找出在地址范围192.168.1.1 到 192.168.1.100有哪些地址没有被使用,可以使用

《系统飞狐》中获取系统信息的方法

一.在我的系统设置软件<系统飞狐>中,应用到一个获取系统信息的源代码 ,在VC++中经过巧妙转换应用到我的软件中,取得了良好的效果,也许很多人都见过这个简单的获取系统信息的类sysinfo,在系统飞狐中充分扩展了它的功能 .该类首先需要编译一个DLL文件然后再调用它根据需要生成我们自己的应用程序. 图一 sysinfo界面 二.先编译DLL文件SysInfo.dll,然后在工程SysInfoTester中调用它,示例代码为DOS程序: //在头文件中先调用DLL文件 #if !defined(

在Visual C#中运用API函数获取系统信息

visual|函数 API函数是构筑Windows应用程序的基石,是Windows编程的必备利器.每一种Windows应用程序开发工具都提供了间接或直接调用了Windows API函数的方法,或者是调用Windows API函数的接口,也就是说具备调用动态连接库的能力.Visual C#和其它开发工具一样也能够调用动态链接库的API函数.本文中笔者就结合实例向大家介绍在Visual C#中如何调用各种返回值的API,该实例就是一个通过API函数调用获取系统信息的程序. 在Visual C#中调用

利用百度空间每天轻松获取100IP

百度  一打开百度首页,百度空间的链接迎面而见,可见百度对空间的重视程度.既然百度空间这么牛,我们完全可以利用百度空间来提高自己网站的IP的.         我把标题写成<利用百度空间每天轻松获取100IP>是只我目前的流量,也主要是因为我目前也在探测阶段中,如果你是个seo关键字高手,那么你利用百度空间每天获取上万IP也不是不可能的,这并不是天方夜谭.        下面我就自己的经验总结几点不成熟的建议,如果觉得不好也不要给我丢鸡蛋啊: (1)空间名字介绍的利用: 空间的名字我们可以用一

在.net中轻松掌握Windows窗体间的数据交互(二)

window|交互|数据 在.net中轻松掌握Windows窗体间的数据交互(二) zhzuo(秋枫) <在.net中轻松掌握Windows窗体间的数据交互(一)>一文中我们讲了使用带参数的构造函数来实现窗体间的数据传递,我认为是用的比较多的一种,接下来让我们看看另外两种实现方法. 二.给窗体添加属性或方法 1.使用Form类的Owner属性 获取或设置拥有此窗体的窗体.若要使某窗体归另一个窗体所有,请为其 Owner 属性分配一个对将成为所有者的窗体的引用.当一个窗体归另一窗体所有时,它便随

在IE10中快捷获取网站的应用,让你快人一步

当你访问某些网站时,会发现导航栏右侧的页面工具按钮多了一个加号,借助这一小提示,你可以轻松知晓该网站已经出了相应的Windows 8 应用,并能够从这里直接进入应用商店下载该应用.具体的设置方法如下: 1.在网页空白处单击鼠标右键,调出导航栏,单击右侧的网页工具栏,在弹出的菜单中选择"获取此网站的应用". 2.网页自动跳转到应用商店页面.在应用商店搜索应用,进行下载即可. 3.如果电脑中已经安装了该网站的应用,单击网页工具栏,弹出的菜单就会提示你切换到相应的应用.一键即可直达网站的应用