System.Diagnostic是通过查询WMI还是通过其他方式获取其数据?

时间:2011-12-20 03:19:37

标签: c# .net wmi

System.Diagnostic是通过查询WMI还是通过其他方式获取数据? WMI是否查询所有这些操作用于获取系统信息(如运行进程)的最基本方式,还是有更直接的方法?

2 个答案:

答案 0 :(得分:4)

不,它不使用WMI。它通过mscorlib.dll和System.dll中System.Win32命名空间内的内部类使用直接本机API调用。像PerformanceCounter和EventLog这样的大多数类只访问使用对advapi32.dll的本机调用的注册表。其他功能(如获取进程列表)使用winnt.dll或kernel32.dll中的调用,具体取决于Windows的版本。您可以找到有关使用的本机Win32调用的更多信息here以及有关性能计数器的更多详细信息here

您可以使用dotPeekReflector.NET并检查mscorlib.dll和System.dll中的System.Diagnostics来验证这一点。

答案 1 :(得分:1)

如果您想了解自己,可以进入.NET框架源代码。

有关如何通过Visual Studio执行此操作的步骤:http://blogs.microsoft.co.il/blogs/arik/archive/2010/07/12/step-into-net-framework-4-0-source-code.aspx