我有一個使用WMI從遠程機器查詢win32_process對象的集合。我如何確定每個進程是32位還是64位?使用WMI,我如何確定遠程進程是32位還是64位?
回答
WMI沒有此功能。解決方案是通過P/Invoke使用IsWow64Process
測試每個進程的Handle
。 This code應該可以幫助你明白。
謝謝。我會給它一個去。很奇怪他們沒有辦法在流程類中或者在.NET API中識別這個問題。 – musaul 2011-03-10 13:51:06
試試這個:
/// <summary>
/// Retrieves the platform information from the process architecture.
/// </summary>
/// <param name="path"></param>
/// <returns></returns>
public static string GetPlatform(string path)
{
string result = "";
try
{
const int pePointerOffset = 60;
const int machineOffset = 4;
var data = new byte[4096];
using (Stream s = new FileStream(path, FileMode.Open, FileAccess.Read))
{
s.Read(data, 0, 4096);
}
// Dos header is 64 bytes, last element, long (4 bytes) is the address of
// the PE header
int peHeaderAddr = BitConverter.ToInt32(data, pePointerOffset);
int machineUint = BitConverter.ToUInt16(data, peHeaderAddr +
machineOffset);
result = ((MachineType) machineUint).ToString();
}
catch { }
return result;
}
public enum MachineType
{
Native = 0,
X86 = 0x014c,
Amd64 = 0x0200,
X64 = 0x8664
}
請記住,這個過程是準確的,但在隊列中有足夠的進程時往往會有點沉重。我在另一個線程中調用了每個進程來緩解UI。 – Xcalibur37 2011-12-09 21:03:51
您正在使用C#編寫此代碼。 EXE可以在32位或64位模式下運行的語言。你不能從EXE頭文件中知道。 – 2011-12-09 22:08:18
您可以編譯到特定平臺。否則,爲什麼有2個不同版本的相同的可執行文件? – Xcalibur37 2011-12-10 00:08:21
- 1. 如何確定進程ID(PID)是32位還是64位應用程序?
- 2. 如何以編程方式確定特定進程是32位還是64位
- 3. WMI和Win32_Process - 確定是32位還是64位?
- 4. 如何從句柄中確定進程是32位還是64位?
- 5. 如何判斷我寫的程序是32位還是64位?
- 6. 如何檢測Cocoa應用程序是32位還是64位?
- 7. 如何判斷應用程序是64位還是32位?
- 8. 如何確定System.Diagnostics.Process是32位還是64位?
- 9. 無論系統是32位還是64位,int都是32位還是64位?
- 10. 檢查正在運行的進程是32位還是64位
- 11. 有沒有辦法檢查進程是64位還是32位?
- 12. 如何使用Java API確定文件是32位還是64位?
- 13. 如何確定我的操作系統是32位還是64位?
- 14. 檢查應用程序是建立在32位還是64位?
- 15. 確定當前的PowerShell Process是32位還是64位?
- 16. 確定可執行文件(或庫)是32位還是64位
- 17. 確定iOS設備是32位還是64位
- 18. 如何確定Java中是否有其他進程或可執行文件是32位還是64位
- 19. 64位OS/32位進程
- 20. 如何檢查我的Perl安裝是32位還是64位?
- 21. 如何判斷我的cygwin安裝是32位還是64位?
- 22. 如何使用32位進程查找64位進程信息
- 23. 知道程序集是64位還是32位
- 24. 如何確定我正在安裝的應用程序是32位還是64位?
- 25. 無論系統是32位還是64位,uint均爲32位?
- 26. 如何判斷應用程序是以32位還是64位模式運行?
- 27. 如何確定操作系統在Go中是32位還是64位?
- 28. 如何確定Python中的數字是32位還是64位整數?
- 29. 如何確定在Windows上安裝的庫是32位還是64位?
- 30. 我如何檢查編譯的二進制文件是32位還是64位?
您使用什麼語言? – Helen 2011-03-03 15:14:43
我正在使用C#使用.NET 3.5 – musaul 2011-03-03 16:13:25
相關:[如何確定System.Diagnostics.Process是32位還是64位?](http://stackoverflow.com/q/3575785/113116) – Helen 2011-03-09 19:13:34