C# 进行WMI操作的内容封装在System.Management.dll中,具体的在MSDN有详细描述,默认是用[“**’]去读取和设置属性等。

此处介绍一个自动生成强类型的包装软件,这样处理起来就简单了很多,不用在反复的查看参数等信息了。

1、 使用WMIExplorer生成WMI对应的包装类

2、 针对生成类可以进行强类型操作。

WMIExplorer可以在http://www.primaltools.com/downloads/communitytools/中找到。

如上图示,选择需要操作的CIM类别,右键生成即可。生成类包括了各种属性和操作的方法。

以Win32_Process管理机器上的进程为例,针对生成的类的操作方法:

using ROOT.CIMV2.Win32;Process.StaticScope = this.scope;
var ps = Process.GetInstances();
foreach (var p in ps)
{
using(Process m = p as Process)
{
System.Diagnostics.Debug.WriteLine(m.Name);
if (m.Name == "notepad.exe")
{
m.Terminate(1);
}
}
}
uint pid;
Process.Create("notepad.exe", null, null, out pid);
var my = Process.GetInstances(this.scope, "ProcessId=" + pid.ToString());
if (my.Count > 0)
{
var i = my.GetEnumerator();
i.MoveNext();
Process p = i.Current as Process;
p.Terminate(1);
}//另一种形式的对比:
ManagementObject mo = new ManagementClass(this.scope, new ManagementPath("MSFT_SIPESUserContactData"), new ObjectGetOptions()).CreateInstance();mo["UserInstanceID"] = this.userId;mo["SIPURI"] = sip;mo["GroupID"] = groupIds;mo["Name"] = name;mo["Subscribed"] = true;mo.Put();SIPESUserContactData.StaticScope = this.scope;SIPESUserContactData c = SIPESUserContactData.CreateInstance();c.LateBoundObject["UserInstanceID"] = this.userId;c.LateBoundObject["SIPURI"] = sip;c.LateBoundObject["GroupID"] = groupIds;c.LateBoundObject["Name"] = name;c.LateBoundObject["Subscribed"] = true;c.CommitObject();
以上可见,由于生成类中包括了属性名字,即使使用名字时,直接参考类就行了。

方便了很多。

这个例子是操作进程和Office Communicator服务器上的联系人的操作示例等。

http://cid-56b433ad3d1871e3.office.live.com/self.aspx/.Public/WMIDemo.zip

转载于:https://www.cnblogs.com/2018/archive/2010/09/25/1834880.html

WMI in C#[强类型操作]相关推荐

  1. Visual C#中用WMI编写网络应用程序

    WMI是Windows Management Instrumentation的简称,即:视窗管理规范.在Windows 2000或以后的版本中均安装得有,NT4.0则需要安装WMI的核心组件.通过WM ...

  2. 【逗老师带你学IT】PRTG通过WMI远程监控windows10运行状态

    网上很多关于Windows开启WMI的文章,但是到了Windows10之后,网上说的办法行不通了,本文介绍在最新的Windows 10 21H1版本开启WMI进行远程监控的办法 目录 一.Window ...

  3. C++实现获取Windows操作系统内核版本号

    作为一名Windows开发者,能熟练掌握WMI技术,在开发Windows应用程序的时候往往能够事半功倍.今天来给大家分享一个使用WMI来获取Windows操作系统内核版本号的例子. 首先我们打开WMI ...

  4. windows系统巡检命令及日常管理操作

    一.基础环境管理 1.CPU使用率 wmic CPU get loadpercentage /value|findstr [1-9] 或 wmic path win32_perfformattedda ...

  5. java wmi_WMI入门教程之什么是WMI?

    WMI出现至今已经二十多年了,但很多人对它并不熟悉.知道它很好很强大,但不知道它从哪里来,怎么工作,使用范围是什么?现在我跟大家说说我的理解... WMI有一组API.我们不管使用VBScript.P ...

  6. Castle ActiveRecord 泛型应用

    Castle ActiveRecord在.Net2.0下支持泛型,这极大的方便了我们创建强类型集合以及对对象的强类型操作.本文引用了Castle站点上泛型的例子来详细介绍如何应用泛型. 另外你需要在这 ...

  7. java windows域_域环境中的windows软件安装

    这几天要在单位部署一个软件包,是msi形式的,据说可以通过"域推送"的形式安装,搜索了一下,发现需要在 组策略->软件设置->软件安装 里面添加放在共享目录里的软件包. ...

  8. 用过 mongodb 吧, 这三个大坑踩过吗?

    一:背景 1. 讲故事 前段时间有位朋友在微信群问,在向 mongodb 中插入的时间为啥取出来的时候少了 8 个小时,8 在时间处理上是一个非常敏感的数字,又吉利又是一个普适的话题,后来我想想初次使 ...

  9. 内网环境下的横向移动总结

    前言 在内网渗透中,当攻击者获取到内网某台机器的控制权后,会以被攻陷的主机为跳板,通过收集域内凭证等各种方法,访问域内其他机器,进一步扩大资产范围.通过此类手段,攻击者最终可能获得域控制器的访问权限, ...

最新文章

  1. 基于自适应策略转移的深度强化学习
  2. Microsoft Sync Framework 2.1 软件开发包 (SDK)
  3. VS2019安全函数scanf_s问题
  4. 数据结构之图的存储结构:邻接矩阵法
  5. 字符串压缩——C语言
  6. LAMP+Varnish缓存详解(一)——Varnish简介
  7. retinex算法小感
  8. openwrt源码下载移植
  9. 特斯拉造芯片:不能失去集成电路的高地,就像西方不能失去耶路撒冷
  10. 2020年数维杯数学建模C题 垃圾转运优化模型设计求解全过程文档及程序
  11. ubuntu14.04彻底卸载ibus安装fcitx拼音输入法
  12. 法人 法人代表和法定代表人的区别
  13. Numpy切片与索引
  14. Java实验3-2【在职研究生类设计实验】
  15. VMware12安装Windows7(二)-ghost win7
  16. Dynamics CRM 系统自定义部分的语言翻译
  17. docker(一):基本组成与常用命令
  18. 机器学习---回归模型和分类模型的评价指标体系
  19. 开发购物商城app需要多少钱
  20. GUESS手表全新推出2022年农历新年系列

热门文章

  1. centos 7.6安装java_Hadoop的安装
  2. vmware6.5.2序列号_教你如何查询苹果序列号,查询是否为官换机、激活时间等
  3. 哪些原因会导致rs485转换器信号受干扰?
  4. 【渝粤教育】国家开放大学2018年春季 8623-22T燃气行业法律法规 参考试题
  5. 【渝粤题库】陕西师范大学202012 刑事诉讼法专论 作业
  6. 【渝粤题库】国家开放大学2021春2617生产与运作管理题目
  7. 8. Geometric problems
  8. 弗林斯传输公式、天线温度
  9. 多媒体计算机属于哪种教学,多媒体计算机属于哪种教学媒体(???)。
  10. java调用php session_php读取memcahed java session