WMI in C#[强类型操作]

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

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

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

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

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

clip_image002

如上图示,选择需要操作的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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/362564.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JSR 303从I18N属性文件加载消息

总览 本文将说明如何适应JSR 303验证API来从I18n属性文件加载消息,并通过保留国际化的所有好处和对多种语言的支持来实现这一点。 为此,我们将实现一个基于Spring API的自定义MessageInterpolator,用于管理I18N消息。 依存关系 在进行这项工…

2019年ipa发布苹果应用商店审核指南

https://baijiahao.baidu.com/s?id1623886553597961077&wfrspider&forpc ipa 发布审核指南 说明: 本指南为初版,旨在帮助非技术人员快速了解苹果ipa发布审核流程非技术的审核专员发布审核只需处理 (五)、iTunes connect …

GridView生成序号

一个经常碰到的情况:GridView需要添加一个序号列,并且从1开始自动编号。而数据库中的ID往往是不连续的(会有记录被删除的情况),我们无法绑定现有字段作为编号。因此我们需要手动给GridView编号。 思路:在Gr…

[前端优化]使用Microsoft Ajax Minifier对资源文件进行压缩优化

在前端优化中,js、css等文件的优化一般都是压缩的优化,进行合并、减小体积以达到减小请求的目的。 今天发现了一个集成在VS中的压缩插件,使得压缩变得比较快捷。 配置方法 首先需要去下载Microsoft Ajax Minifier,一路安装就可以&…

手把手教你用 elementUI 实现导航栏

elementUI导航栏官网 1. 安装 elementUI 2. 文件准备 3. 配置路由 4. 导航栏代码 一、安装 elementUI npm i element-ui -S; 在 main.js 中注册组件: import ElementUI from element-ui; import element-ui/lib/theme-chalk/index.css; Vue.use(Elem…

Java 8编写自定义收集器简介

Java 8引入了收集器的概念。 大多数时候,我们几乎不使用Collectors类中的工厂方法,例如collect(toList()) , toSet()或其他更花哨的方法,例如counting()或groupingBy() 。 实际上,没有多少人真正去研究如何定义和实现收…

vuex+element 从后台获取数据写导航栏-菜单权限

主要用到 vuex、router.beforeEach、router.addRoutes()。vuex 的使用方法可以看我的另一篇博客:vue笔记(四)vuex。 顺便安利一个 在线视频转gif图。 因为第一次用到 router.addRoutes(),在做这个需求的时候遇到了很多问题&…

Sql Server全局变量(转)

Sql Server一共提供了30多个全局变量常用:IDENTITY : 返回最后插入行的标识列的列值。ERROR : 返回最后执行的Transact-SQL语句的错误代码。没有错误则为零。ROWCOUNT : 返回受上一语句影响的行数,任何不返回行的语句将这一变量设置为0。DBTS : 返回当前数据库的…

P3393 逃离僵尸岛 最短路dijkstra

题目描述 小a住的国家被僵尸侵略了!小a打算逃离到该国唯一的国际空港逃出这个国家。 该国有N个城市,城市之间有道路相连。一共有M条双向道路。保证没有自环和重边。 K个城市已经被僵尸控制了,如果贸然闯入就会被感染TAT...所以不能进入。由其…

jquery 给iframe里的元素添加事件

$("#iframeId").on("load", function(event){//判断 iframe是否加载完成 这一步很重要$("#divId",this.contentDocument).click(function(){//添加点击事件alert("就是这样");}); });更多专业前端知识,请上 【猿2048】www…

JavaFX技巧7:使用CSS颜色常量/派生颜色

在使用FlexCalendarFX时,我不得不定义一组颜色以可视化不同颜色的不同日历的控件。 每个日历不仅提供一种颜色,还提供几种:用于取消选择/选定/悬停状态的背景和文本颜色。 颜色曾在多个地方使用过,但为了简洁起见,我仅…

spring step 1 : 什么是spring

学习一门技术之前还是花点时间来看看这门技术的特点,我们通过使用这种技术能够达到什么效果。 1.spring是什么? 2.spring能够干什么? 3.为什么使用spring? 1.spring是一个开源的框架,主要是由IoC,AOP&#…

文字溢出显示三个点

1、单行溢出 text-overflow: ellipsis; overflow: hidden; white-space: nowrap; width: 90%; 2、多行溢出 overflow: hidden; text-overflow: ellipsis; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; 转载于:https://www.cnblogs.co…

import() 动态加载component组件失败

在写 vueelement 从后台获取数据写导航栏 时,当我加载动态路由,import() 总是失败。 假设 path: “/views/Home.vue”,name: “Home”。 一、使用 import() 语法加载组件 参考:“Cookysurongbin”的 解决vue动态路由异步加载im…

JPA /休眠刷新策略初学者指南

介绍 在我之前的文章中,我介绍了实体状态转换 对象关系映射范例。 当刷新当前持久性上下文时,所有管理实体状态转换都将转换为关联的数据库语句。 Hibernate的刷新行为并不总是像人们想象的那么明显。 后写 Hibernate尝试将持久性上下文刷新推迟到最后…

进入登录页时,用户名输入框自动聚焦、按enter键让密码框聚焦,完整输入信息后登录

让element-ui的输入框聚焦的4种方式 思路:(可以跳过这一步看完整代码——完整代码) 1. 进入页面时,用户名输入框就要获取焦点,使用 自定义指令 聚焦更方便。当然也可以用 ref 在 mounted() 钩子函数中让输入框聚焦。 …

JS的对象及其属性和方法

在JavaScript中是基于对象的编程,而不是完全的面向对象的编程。       那麽什麽是对象呢?如果你学过一些VB的编程,对这个名词一定不会陌生。通俗的说,对象是变量的集合体,对象提供对于数据的一致的组织手段&…

vue-cli安装步骤

vue-cli脚手架模板是基于node下的npm来完成安装的所以首先需要安装node 条件: node在4.以上,npm在3以上 安装 指令: 1、 npm install -g vue-cli在全局下安装vue-cli # 安装 vue-cli npm install -g vue-cli# 初始化 webpack 项目 vue in…

# reverse swap

目录: swap(数字、字符串、)reverseStringreverseWordsswap /** 借助临时变量 */ function swap(str1, str2) {const temp str1;str1 str2;str2 temp; } /** 解构赋值 */ [a, b] [b, a];/** 对象 */ {a,b} {a:b,b:a} /** 加法 只适用于…

使用Java编写简单的老虎机游戏

无论游戏多么简单或复杂 ,Java都能胜任! 在这篇文章中,让我们看一下Java编程的初学者如何制作一个简单而功能齐全的老虎机。 老虎机已经存在很长时间了,但是它的娱乐价值似乎并没有减弱。 InterCasino是第一个在1996年向世界提供…