请教一个关于c#调用 wmic.exe 的问题

请教一个关于c#调用 wmic.exe 的问题,第1张

LZ搞复杂了,先写了一个批处理,然后执行,批处理通过管道符输出到Txt,然后再读取Txt......

实际上可以直接用Process执行exe,然后把输出流重定向一下,就可以直接读输出的内容了。

批处理执行是异步的,Thread.Sleep(2000)也不保准,反而是用Process的WaitForExit相对靠谱一点。

WMIC,是一款新出现在Windows

Server

2003中的命令行管理工具。使用WMIC,你不但可以管理本地计算机,而且可以管理同一Windows域内的所有远程计算机(需要必要的权限),而被管理的远程计算机不必事先安装WMIC,只需要支持WMI即可。

WMIC有一个能够分析、解释和执行从命令行接收的别名(Alias)的引擎,它是一个可执行文件,名为WMIC.exe,这个文件通常位于"c:\windows\

system32\wbem"文件夹中,该程序运行于用户当前登录的计算机上。任何对WMIC命令行的扩展性能都经过别名文件定义或者注册。别名又称友好名称(Friendly

Names),通过MOF(Management

Object

Format,管理对象格式)格式定义。WMIC引擎接收到输入的命令后,先进行分析。如果命令是一个别名,WMIC会从当前 *** 作命名空间(比如root\cli)调用该别名的定义,应用当前的环境设置(如目标命名空间),并将别名命令与它的原始命令进行对应,然后执行。

利用wmic获取cpu使用率

看到一个程序通过wmic process get Caption,KernelModeTime,UserModeTime命令来

获取所有进程的KernelModeTime和UserModeTime。

算出所有进程的 (KernelModeTime总和 + UserModeTime总和),作为allPorcessTime1;

算出System Idle Process进程和System进程的 (KernelModeTime总和 + UserModeTime总和),作为systemProcessTime1;

隔几秒后,再次调用wmic命令,再次获取allPorcessTime2和systemProcessTime2;

然后,

busyTime = allPorcessTime2 - allPorcessTime1

idleTime = systemProcessTime2 - systemProcessTime1

cpu使用率 = 100 * (busyTime) / (busyTime + idleTime)


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/11388548.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存