4
A
回答
2
您可以使用IsWow64Process
Windows API調用來確定進程是否在64位操作系統上的32位仿真下運行。
這裏是pinvoke link
更新:我這個基準一點點,結果如下:
- 枚舉所有的進程與
Process.GetProcesses()
需要大部分的時間約在我的筆記本電腦上有12個運行的進程有93個進程 - 獲取句柄並執行
IsWow64Process
調用花費了大約100美元。在同一檯筆記本電腦上每個進程0.1毫秒。 - 用WMI獲取所有的流程大約需要幾分鐘。在同一檯筆記本電腦上520ms(同時運行93個進程)。
基本上是:如果你能的事實,你得到的名單後的過程可能會離開,你設法查詢之前,然後使用PInvoke的方式似乎比使用WMI更快,迅捷我應付。儘管從流程角度來看,WMI可能是較不干擾的方式。
2
我認爲WMI有可能。
+0
你*不應該*做的是做該線程中提到的任何其他解決方案 - 堅持使用WMI方法,這是迄今爲止最爲理智的解決方案! – 2011-04-13 06:58:01
+0
Paul - 爲什麼WMI是PInvoking kernel32.dll的優越解決方案,以便爲任何進程句柄獲取WoW64狀態? – stephbu 2011-04-13 07:04:47
相關問題
- 1. 64位OS/32位進程
- 2. 如何從32位進程啓動64位進程
- 3. 如何使用32位進程查找64位進程信息
- 4. 在.NET中,32位進程如何與64位進程通信?
- 5. 如何識別32位機器上超過4 GB的內存
- 6. 在64位進程(特別是Flash)中託管32位OCX
- 7. 如何從32位或64位進程啓動64位PowerShell進程?
- 8. 如何識別32位odbc從Windows 7中的.net應用程序調用它
- 9. 如何識別Python中的進程ID
- 10. 如何識別瘦服務器進程?
- 11. .Net HttpListener:如何識別調用進程
- 12. 使用ClickOnce部署識別目標機器(32位或64位)
- 13. 如何在32位進程中引用64位變量?
- 14. 如何從32位代碼啓動64位Windows進程?
- 15. 如何從64位進程使用32位COM對象?
- 16. 如何從32位進程讀取64位註冊表項?
- 17. 如何從x64模式的windows下的現有32位進程獲得32位堆棧限制/ 32位TEB/TIB?
- 18. 識別子進程的子進程?
- 19. GetModuleFileNameEx對32位進程從Windows 64位進程10
- 20. 32位進程無法訪問64位進程中的模塊
- 21. 識別活動進程
- 22. 大型地址識別標誌對於64位計算機上的32位應用程序如何工作?
- 23. 將三個32位標識符合併爲一個32位標識符?
- 24. WOW64:從32位進程獲得x64%CommonProgramFiles%
- 25. 如何識別應用程序進程何時死亡?
- 26. 位置識別
- 27. 如何確定進程ID(PID)是32位還是64位應用程序?
- 28. 使用WMI,我如何確定遠程進程是32位還是64位?
- 29. 如何以編程方式確定特定進程是32位還是64位
- 30. .BAT文件來識別64/32位系統
這種方法更好,但會受到競爭條件的限制,因爲打開每個進程的句柄並不特別活潑,當他試圖查詢它時,進程可能會消失。 WMI已經擁有了他所需要的信息,而且他不必擔心獲得正確的流程清單的細微差別 – 2011-04-13 07:01:09
嗯,至少這種快樂並不完全正確。 – ChrisWue 2011-04-14 09:45:31