J'ai une collection d'objets win32_process interrogés à partir d'une machine distante en utilisant WMI. Comment puis-je déterminer si chaque processus est 32 bits ou 64 bits?En utilisant WMI, comment puis-je déterminer si un processus distant est en 32 bits ou en 64 bits?
En utilisant WMI, comment puis-je déterminer si un processus distant est en 32 bits ou en 64 bits?
Répondre
WMI ne possède pas cette fonctionnalité. La solution consiste à tester le Handle
de chaque processus en utilisant IsWow64Process
via P/Invoke. This code devrait vous aider à avoir l'idée.
Merci. Je vais essayer.Très étrange qu'ils n'ont pas un moyen d'identifier cela dans la classe de processus, ou même dans l'API .NET d'ailleurs. – musaul
Essayez ceci:
/// <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
}
Gardez à l'esprit que ce processus est précis, mais a tendance à être un peu lourd avec suffisamment de processus dans la file d'attente. J'appelle cela par processus dans un autre thread pour alléger l'interface utilisateur. – Xcalibur37
Vous écrivez ce code en C#. Une langue dont les fichiers EXE peuvent s'exécuter en mode 32 bits ou 64 bits. Vous ne pouvez pas dire à partir de l'en-tête EXE. –
Vous pouvez compiler vers une plate-forme spécifique. Sinon, pourquoi avoir 2 versions différentes du même exécutable? – Xcalibur37
- 1. WMI et Win32_Process - déterminer si 32 ou 64 bits?
- 2. Déterminer si le processus PowerShell actuel est 32 bits ou 64 bits?
- 3. SetEnvironmentVariable en 32 bits Processus sur OS Windows 64 bits
- 4. Application 64 bits démarrage processus 32 bits
- 5. debunits nunit en 64 bits, l'application est en 32 bits
- 6. Comment trouver en utilisant c-programme si mon ordinateur est 16 bits ou 32 bits ou 64 bits
- 7. Sachez si l'assembly est 64 bits ou 32 bits
- 8. Processus 64 bits OS/32 bits
- 9. Y at-il un moyen de vérifier si le processus est 64 bits ou 32 bits?
- 10. Interopérabilité 32 bits et 64 bits sur Windows 64 bits
- 11. Déterminer par programme si natif .exe est 32 bits ou 64 bits
- 12. Comment vérifier si IIS est en mode 32 bits ou 64 bits
- 13. MacOSX: savoir si un processus (donné un PID) fonctionne en 32 bits ou en mode Intel 64 bits
- 14. Chargement d'un processus 32 bits dans un environnement 64 bits
- 15. Comment puis-je déterminer si une application que j'installe est 32 bits ou 64 bits?
- 16. comment déterminer si la bibliothèque installée est 32 bits ou 64 bits sur Windows?
- 17. Chargement d'une DLL 32 bits dans un processus 64 bits
- 18. Comment diviser un nombre 64 bits en 32 bits haut et 32 bits bas dans VBScript?
- 19. L'iPhone OS 64 bits ou 32 bits?
- 20. convertir un 64 bits .so en 32 bits
- 21. Utilisation d'une DLL spécifique 32 bits ou 64 bits en fonction de la bit de processus
- 22. Application 64 bits communiquant avec le processus 32 bits
- 23. Comment lancer un processus Windows en 64 bits à partir d'un code 32 bits?
- 24. En cours d'exécution sur matlab 32 ou 64 bits?
- 25. Démarrage du processus 64 bits au cours de l'installation 32 bits pour modifier 32 bits et 64 bits .NET machine.config
- 26. MS Access 32 bits de conversion en erreur 64 bits
- 27. Appel code 32 bits à partir de 64 bits Processus
- 28. 32 bits client Oracle en application 64 bits
- 29. Convertir 32 bits exe en 64 bits exe sur Windows 7 64 bits machine
- 30. Conversion du code Nasm Fibonacci 32 bits en 64 bits
Quelle langue utilisez-vous? – Helen
J'utilise C# en utilisant .NET 3.5 – musaul
Connexes: [Comment déterminer si un System.Diagnostics.Process est 32 ou 64 bits?] (Http://stackoverflow.com/q/3575785/113116) – Helen