2011-12-20 70 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。

相關問題