制作了一个WMI 查询分析工具

简介:
按微软的介绍大致如下:
WMI 是 Microsoft 主要的针对 Windows 的管理支持技术。在 WMI 之前,所有的 Windows 图形化管理工具都依赖于 Win32 应用程序编程接口(Application Programming Interfaces,APIs)来访问和管理 Windows 资源。在 WMI 之前,能够以编程方式访问 Windows 资源的惟一方法就是通过 Win32 API。这种情况使 Windows 系统管理员无法通过一种简便的方法利用常见的脚本语言来自动化常用的系统管理任务,因为大多数脚本语言都不能直接调用 Win32 API。通过提供一致的模型和框架,WMI 改变了这种情况 — 通过模型和框架,所有的 Windows 资源均被描述并公开给外界。最好的一点是,系统管理员可以使用 WMI 脚本库创建系统管理脚本,从而管理任何通过 WMI 公开的 Windows 资源!

我已经不记得什么时候就知道的这个WMI,但直到今天才认真的学学;可能是采用SQL的语法吸引了我吧,至少用它来做到“windows 优化大师”所获取的系统信息是很容易的。晚上一直在弄这个小程序,因为WMI设计到windows的方方面面,所以我想做一个想sqlserver带的查询分析器的工具,专门用于调试WMI的查询;用了后才发现使用起来确实方便,.net提供一个System.Management.ManagementObjectSearcher类,用它很简单的就可操作WMI;如下是简单实例:

ManagementObjectSearcher search = new ManagementObjectSearcher("SELECT * FROM Win32_ComputerSystem");
sysInfoListTest.Items.Clear();
sysInfoListTest.Items.Add("Computer System Information");
foreach(ManagementObject info in search.Get())
{
sysInfoListTest.Items.Add("Manufacturer: " + info["manufacturer"].ToString());
sysInfoListTest.Items.Add("Model: " + info["model"].ToString());
sysInfoListTest.Items.Add("System Type: " + info["systemtype"].ToString());
sysInfoListTest.Items.Add("Total Physical Memory: " + info["totalphysicalmemory"].ToString());
}

这个是访问计算机系统的一些基础信息,比如可以知道系统的“物理内存”大小;

我在程序里实现了一个内存表,专门用于dataGrid来显示数据,通过访问 ManagementObject的属性信息,把每个类的名称作为列显示出来;下面的代码就是实现的核心:
foreach(ManagementObject mo in mos.Get())
{
DataRow dr = dt.NewRow();

PropertyDataCollection.PropertyDataEnumerator oEnum;
//显示系统类
//获取属性,系统类
oEnum = (mo.Properties.GetEnumerator() as PropertyDataCollection.PropertyDataEnumerator);
while(oEnum.MoveNext())
{
PropertyData prop = (PropertyData)oEnum.Current;
if(dt.Columns.IndexOf(prop.Name)==-1)
{
dt.Columns.Add(prop.Name);
Console.Out.WriteLine(prop.Name);
dt.Columns[dt.Columns.Count-1].DefaultValue = "";
}

try
{
//该类未实例化,所以需要异常结构,表示为null
dr[prop.Name] = mo[prop.Name].ToString();
Console.Out.WriteLine(prop.Name + " row");
}

catch
{
Console.Out.WriteLine(prop.Name + " row error");
}

}

}


可以看到这句代码 :
mo.Properties.GetEnumerator() as PropertyDataCollection.PropertyDataEnumerator
这里的Properties所访问的是非系统属性集合,既然是调试工具那么就得把SystemProperties也列出来,实现的过程同上。

下面的帖图是运行界面:

WQLface.png
PS:我刻意缩小了,因为每次帖的图片过大了


下次再实现读出所有的可访问的类;




本文转自suifei博客园博客,原文链接:http://www.cnblogs.com/Chinasf/archive/2005/05/26/162545.html,如需转载请自行联系原作者

相关文章
|
6月前
|
SQL Java 关系型数据库
技术心得记录:开源BI分析工具Metabase配置与完全使用手册
技术心得记录:开源BI分析工具Metabase配置与完全使用手册
763 0
|
7月前
|
安全 BI Windows
LabVIEW报表生成工具包时出现错误-41106
LabVIEW报表生成工具包时出现错误-41106
94 3
|
搜索推荐 网络安全 API
GUI图形化渗透测试信息搜集Tools
GUI图形化渗透测试信息搜集Tools
200 0
|
网络协议 数据安全/隐私保护
|
安全
【工具】分析邮箱信息工具emlAnalyzer
在国内我甚至找不到这个工具的中文介绍,可见我们对这方面的轻视,事实上,每年关于邮箱攻击的事件不计其数,因此,我们应该好好了解一番。
606 0
|
监控 Windows
如何用Windows性能监视器进行SMB性能监控和分析
本文介绍如何通过Windows 性能监视器(Perfmon) 使用SMB 客户端性能计数器(Performance Counters)进行性能监控和分析。
3445 0
|
人工智能 数据可视化 搜索推荐
|
运维 Oracle 关系型数据库
[自制工具]简便易用的ADDM报告生成工具
Oracle数据库自带的ADDM报告生成工具有一些依赖条件,使用比较繁琐,而且报告名字不易于区分、分发。 所以一直想写一个简单、易用的ADDM报告工具,今天终于把这个工具编写、调试完毕,现正式发布,也同时发布在GitHub。
392 0
Facebook开发实时分析控制面板
据国外媒体报道,Facebook正在开发一个新的控制面板,以便让开发人员能够更好地看到他们的Facebook应用程序。旧的控制面板包含的数据通常不超过48小时。新的分析控制面板将是实时的。而数据将是匿名的,你无法查看是谁在看什么东西,只能看到不同内容的人气。
864 0