Comment déterminer par programmation si un processus est en 32 bits ou 64 bits
Comment mon application C# vérifier si une application particulière/processus (remarque: le processus actuel) est en cours d'exécution en 32-bit ou 64-bit de mode?
Par exemple, je pourrais avoir besoin d'interroger un processus particulier par nom, j'.e, 'abc.exe' ou basé sur le numéro d'ID de processus.
- Veuillez toujours mettre la langue dans une balise; je vais changer de maintenant sur ce post. 🙂
- Veuillez préciser si vous voulez savoir les actuelle processus est de 64 bits ou vous interrogez un autre processus?
- Dupelicate: stackoverflow.com/questions/266082/...
Vous devez vous connecter pour publier un commentaire.
L'un des plus intéressant que j'ai vu est: est-ce
Pour savoir si d'AUTRES processus sont en cours d'exécution dans le 64-bit émulateur (WOW64), utilisez ce code:
(Environment.OSVersion.Version.Major >= 5 && Environment.OSVersion.Version.Minor >= 1)
Et c'est pourquoi Microsoft a pour créer la version mensonge compatibilité des cales - pour contourner les bugs dans le code comme ça. Ce qui se passe lorsque Windows Vista (6.0) qui vient de sortir? Et puis les gens mauvais de la bouche de Microsoft pour Windows 7 version 6.1 plutôt que de 7.0, il corrige donc beaucoup de app-compat bugs.processHandle = Process.GetProcessById(process.Id).Handle;
au lieu de simplementprocessHandle = process.Handle;
?Si vous êtes en utilisant .Net 4.0, c'est un one-liner pour le processus en cours:
Voir De l'environnement.Is64BitProcessProperty (MSDN).
Is64BitProcess
? Peut-être que je peux utiliser ce qu'il fait, de savoir si je suis en cours d'exécution dans un processus 64 bits.Is64BitProcess
( referencesource.microsoft.com/#mscorlib/system/environment.cs). Cependant, c'est juste un retour codée en dur relevé, contrôlée par le symbole de compilation.La réponse sélectionnée est incorrecte car elle ne permet pas de faire ce qui était demandé. Il vérifie si un processus est un x86 processus en cours d'exécution sur le système d'exploitation x64, au lieu; de sorte qu'il sera de retour "faux" pour un x64 processus sur le système d'exploitation x64 ou x86 processus en cours d'exécution sur x86 OS.
Aussi, il ne gère pas les erreurs correctement.
Ici est un bonne méthode:
Environment.GetEnvironmentVariable("PROCESSOR_ARCHITECTURE") == "x86"
retourne toujours vrai pour un processus 32 bits. Mieux utiliserSystem.Environment.Is64BitOperatingSystem
si .NET4 est pris en chargeVous pouvez vérifier la taille d'un pointeur pour déterminer s'il est 32bits ou 64bits.
Ici est celui de la vérification.
J'aime utiliser ce:
De cette façon si j'ai besoin de trouver ou vérifier un fichier que je peux facilement écrire:
Environment.GetFolderPath(Environment.SpecialFolder.ProgramFilesX86)
au lieu de coder en dur `C:\Program les Fichiers"?