2011-12-20 67 views
1

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

+2

它非常依赖于你所指的数据。为了获得有用的答案,你必须比'System.Diagnostic'更具体。无论是那样的,还是像亚当所说的那样,你自己单步执行代码。但请记住,获取信息的地方都是非常抽象的设计。你不应该知道或关心信息的来源。如果您尝试自己实现此类功能,请更新问题以更具体地了解您想要获取的信息。 – 2011-12-20 04:51:21

回答

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。

相关问题