System.Diagnostic是否通過查詢WMI或其他方式來獲取其數據? WMI是否查詢所有這些操作用於獲取系統信息(如正在運行的進程)的最基本方式,還是有更直接的方法?System.Diagnostic是否通過查詢WMI或其他方式獲取其數據?
1
A
回答
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
如果您想了解自己,可以進入.NET框架源代碼。
這裏的步驟就如何通過Visual Studio做到這一點:http://blogs.microsoft.co.il/blogs/arik/archive/2010/07/12/step-into-net-framework-4-0-source-code.aspx
相關問題
- 1. 通過WMI查找pathspec是否是目錄或文件(或其他)?
- 2. 通過replaceDialog或任何其他方式
- 3. 一個數組(或其他方式)獲取數據
- 4. WMI:獲取無效類錯誤通過其他程序
- 5. 如何在Hyperledger Composer中查詢或獲取其他鏈式代碼數據?
- 6. 如何通過mysql查詢獲取表結構及其數據?
- 7. 通過用JOIN或其他方式替換IN()子句來加速MySQL查詢?
- 8. 通過排除其他查詢
- 9. 是否有任何其他的方式來BigQuery中通過API除了通過數據流中插入數據
- 10. 是否有任何其他方式獲取Googlescript中的URL?
- 11. 有沒有辦法通過API或其他方式獲取Instagram @Mention History?
- 12. 使用SyncStatusObserver或通過其他方式獲取同步狀態信息?
- 13. 多線程對象與WMI查詢和一些其他查詢
- 14. 使用Parse獲取其他查詢列
- 15. Group按查詢 - 任何其他方式?
- 16. 編寫的Django查詢其他方式
- 17. 通過反射或其他方式重寫java final方法?
- 18. 通過調用ajax(跨域)獲取數據的其他url
- 19. 通過WQL查詢調用WMI方法
- 20. 通過WMI或T-SQL獲取總CPU#
- 21. iOS預加載/通過API或其他方式緩存谷歌地圖數據?
- 22. has_many通過和其他數據:計數
- 23. 查詢是否在數據庫的其他地方引用了外鍵
- 24. 查詢數據取決於來自其他表的數據
- 25. 通過名稱或其他東西獲取React.js組件
- 26. Android - 按鈕:通過意圖/其他方式通過數據接收
- 27. 是否有可能通過編程方式獲取其中一個子節點
- 28. C# - 通過Gmail或其他方式發送電子郵件?
- 29. 如何通過許可或其他方式保護FCM服務
- 30. FormsAuthentication.SetAuthCookie通過服務(或其他遠程方式)
它非常依賴於你所指的數據。爲了獲得有用的答案,你必須比'System.Diagnostic'更具體。無論是那樣的,還是像亞當所說的那樣,你自己單步執行代碼。但請記住,獲取信息的地方都是非常抽象的設計。你不應該知道或關心信息的來源。如果您嘗試自己實現此類功能,請更新問題以更具體地瞭解您想要獲取的信息。 – 2011-12-20 04:51:21