Comment savoir si mon application est exécutée en tant qu'application 32 bits ou 64 bits?

StackOverflow https://stackoverflow.com/questions/266082

  •  06-07-2019
  •  | 
  •  

Question

Comment savoir si mon application (compilée dans Visual & Studio & 2008 & 2008 en tant que Tout processeur ) s'exécute en tant qu'application 32 bits ou 64 bits?

Était-ce utile?

La solution

if (IntPtr.Size == 8) 
{
    // 64 bit machine
} 
else if (IntPtr.Size == 4) 
{
    // 32 bit machine
}

Autres conseils

Si vous utilisez .NET 4.0, c'est un one-liner pour l'actuel processus:

Environment.Is64BitProcess

Référence: propriété Environment.Is64BitProcess (MSDN)

J'ai trouvé ce code dans Martijn Boven qui fait le tour:

public static bool Is64BitMode() {
    return System.Runtime.InteropServices.Marshal.SizeOf(typeof(IntPtr)) == 8;
}

Cet exemple de code fourni par Microsoft Framework Tout-en-un code peut répondre à votre question:

Détecter le processus en cours d'exécution de la plateforme en C # (CSPlatformDetector)

  

L'exemple de code CSPlatformDetector illustre les tâches suivantes   liées à la détection de la plateforme:

     
      
  1. Détecte le nom du système d'exploitation actuel. (par exemple, "Microsoft Windows 7 Entreprise")
  2.   
  3. Détecte la version du système d'exploitation actuel. (exemple: "Microsoft Windows NT 6.1.7600.0")
  4.   
  5. Déterminez si le système d'exploitation actuel est un système d'exploitation 64 bits.
  6.   
  7. Déterminez si le processus en cours est un processus 64 bits.
  8.   
  9. Déterminez si un processus arbitraire en cours d'exécution sur le système est en 64 bits.
  10.   

Si vous souhaitez simplement déterminer si le processus en cours est un processus 64 bits processus, vous pouvez utiliser la propriété Environment.Is64BitProcess qui est nouveau dans .NET Cadre 4.

Et si vous souhaitez détecter si une application quelconque exécutée sur le système est un processus 64 bits, vous devez déterminer le bitness du système d'exploitation, et si c'est 64 bits, appelez IsWow64Process () avec le descripteur de processus cible:

static bool Is64BitProcess(IntPtr hProcess)
{
    bool flag = false;

    if (Environment.Is64BitOperatingSystem)
    {
        // On 64-bit OS, if a process is not running under Wow64 mode, 
        // the process must be a 64-bit process.
        flag = !(NativeMethods.IsWow64Process(hProcess, out flag) && flag);
    }

    return flag;
}

Dans .Net Standard, vous pouvez utiliser System.Runtime.InteropServices.RuntimeInformation.OSArchitecture

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top