WMI是。。。
来自百度百科:WMI(Windows Management Instrumentation,Windows 管理规范)是一项核心的 Windows 管理技术;用户可以使用 WMI 管理本地和远程计算机。
这次主要是因为想查看进程运行的用户信息,.NET提供的Process类木有这个信息,所以网上搜了一下,发现都是利用从WMI里查询到的信息来拿到用户信息。然后就又翻了一下WMI是什么东西,貌似功能很丰富的一个东西,主要是里面有系统的各种信息,貌似也可以对系统进行一些操作。然后翻了半天也没太翻明白。。。
先记下一些链接以后有机会再仔细研究:
WMI介绍、WQL:http://www.cnblogs.com/2018/archive/2010/09/25/1834879.html
【探索PowerShell 】【十三】WMI对象:http://marui.blog.51cto.com/1034148/296083
.NET(C#):调用WMI方法来得到进程的用户名称:http://www.cnblogs.com/mgen/archive/2011/10/26/2225444.html
这里就先说说WMI的测试器,系统自带的,在运行里直接:wbemtest
上面就是打开以后的界面,感觉很神奇。
打开以后,首先要选择右上角的连接:
WMI的命名空间很多。。。但是找了半天也没找到哪里有个命名空间列表可以显示,最后找到一个XP时代的工具:
WMI Administrative Tools:http://www.microsoft.com/en-us/download/details.aspx?id=24045
这个工具貌似很老了,但是好像还能用,不过也不太好用了,其实上面的链接中有一个讲PowerShell的里面有用PowerShell来查看WMI命名空间的方法,可以使用那个东东。
就用这次要查询的进程信息为例吧,它在root的cimv2命名空间下,连接完后点中间有个查询按钮,打开查询窗口:
在这里面要输入WQL查询语句,其实跟SQL语法非常的类似,其实我可以说一致么。。。只是查的东西不一样。
这里就是从Win32_Process这个,貌似是个类,里面查到所有的进程信息。
这里就是查询结果了,里面列出了系统当前所有运行的进程信息,其实是Win32_Process类的所有对象
双击任意一个可以查看详情:
这就是这个对象的具体信息了,主要是在属性里面,可以通过“显示MOF”以文本形式查看:
这里面有进程名、进程ID信息,但其实还是没有要查询的进程用户信息,这时候回去点类,可以看到该对象的类的定义,就是Win32_Process的定义:
在这里面可以看到类的属性和方法,方法中的GetOwner就是这次要用到的方法,可以继续双击查看方法的详情:
还是看不到。。。点编辑输出参数:
嗯,终于看到了,方法有两个string的返回值分别是user和domain。。。
其实这都是从别人给的调用例子反推出来的,自己找还真不好找,找着了也还是不会用。。。