System.Diagnostic是通过查询WMI还是通过其他方式获取数据? WMI是否查询所有这些操作用于获取系统信息(如运行进程)的最基本方式,还是有更直接的方法?
答案 0 :(得分:4)
不,它不使用WMI。它通过mscorlib.dll和System.dll中System.Win32命名空间内的内部类使用直接本机API调用。像PerformanceCounter和EventLog这样的大多数类只访问使用对advapi32.dll的本机调用的注册表。其他功能(如获取进程列表)使用winnt.dll或kernel32.dll中的调用,具体取决于Windows的版本。您可以找到有关使用的本机Win32调用的更多信息here以及有关性能计数器的更多详细信息here。
您可以使用dotPeek或Reflector.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