zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    js 实现页面局部(或图片)放大功能(vue)
    momentjs 使用总结
    VUX的使用方法(以弹出框为例)
    vue alert插件(标题为图片)(自写)
    vue 五星评价插件
    ES6 学习笔记(基础)
    SVG
    纯 CSS 实现实心三角形和空心三角形
    selectedIndex和onchange事件
    DOM文档获取和简介
  • 原文地址:https://www.cnblogs.com/2018/p/1834880.html
Copyright © 2011-2022 走看看