我必须在我的Web项目中创建资源监视仪表板(如任务管理器)。我正在使用WMI。我可以从CurrentBandwidth
获取BytesTotalPersec
和Win32_PerfFormattedData_Tcpip_NetworkInterface
,但它会返回7个项目(任务管理器在“网络”标签中只显示4个项目)。我发现有些物品被禁用了;我可以使用NetEnabled
中的Win32_NetworkAdapter
查找哪些内容已启用,但我如何加入这两个?如何像任务管理器一样显示网络信息?
我想获取任务管理器显示的网络信息(例如AdapterName
,Utilization
(为此我必须获得带宽和总发送/接收字节数/秒),Speed
,和州)。我可以使用Win32_PerfFormattedData_Tcpip_NetworkInterface
和其他人使用Win32_NetworkAdapter
来获得部分内容。例如,我可以使用{Win32_PerfFormattedData_Tcpip_NetworkInterface'的BytesTotalPersec
成员获取所有网络的发送/接收字节数/秒,但这将检索所有网络(包括已禁用)数据。如何仅为启用的网络获取发送/接收字节/秒测量值?
答案 0 :(得分:1)
执行此操作的最佳方法是使用WQL查询。
http://msdn.microsoft.com/en-us/library/aa392902(v=vs.85).aspx
所以你的第一个查询将是这样的
"SELECT Name FROM Win32_NetworkAdapter WHERE NetEnabled = 'true'"
获得该列表后,您可以在该IEnumerable上执行for-each并在每个上面调用类似的查询:
"SELECT * FROM Win32_PerfFormattedData_Tcpip_NetworkInterface WHERE Name = '" + adapter + "'"
但是,你可能会发现一些有趣的问题,比如这些名字并不总是完全匹配。在我的机器上,NetworkAdapterWMI在名称前加上" Intel(R)"并且NetworkInterfacesWMI前缀相同的名称为" Intel [R]"所以你可能需要在两个查询之间进行一些转换。
希望这会让你开始朝着正确的方向前进。