64 votes

Comment puis-je savoir si mon application s'exécute en tant qu'application 32 bits ou 64 bits ?

Comment puis-je savoir si mon application (compilée dans Visual Studio 2008 en tant que Toute unité centrale ) est exécuté en tant qu'application 32 bits ou 64 bits ?

146voto

Sam Points 1121

Si vous utilisez .NET 4.0, il s'agit d'une ligne unique pour le processus actuel :

Environment.Is64BitProcess

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

63voto

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

5voto

Lawrence Johnston Points 9723

J'ai trouvé ce code dans Martijn Boven qui fait l'affaire :

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

5voto

Jialiang Ge Points 31

enter code here http://code.msdn.microsoft.com/CSPlatformDetector-e7a99806 Cet exemple de code provenant de Microsoft All-In-One Code Framework peut répondre à votre question.

L'exemple de code CSPlatformDetector démontre les tâches suivantes relatives à la à la détection de plate-forme :

  1. Détermine le nom du système d'exploitation actuel. (par exemple, "Microsoft Windows 7 Enterprise")
    1. Détecter la version du système d'exploitation actuel. (par exemple "Microsoft Windows NT 6.1.7600.0")
    2. Déterminez si le système d'exploitation actuel est un système d'exploitation 64 bits. 64 bits.
  2. Déterminez si le processus actuel est un processus 64 bits.
  3. Déterminer si un processus arbitraire s'exécutant sur le système est 64 bits.

Déterminer si le processus actuel ou un processus arbitraire s'exécutant sur le le système est un processus 64 bits.

Si vous voulez déterminer si le processus en cours d'exécution est un processus 64-bit vous pouvez utiliser la propriété Environment.Is64BitProcess, nouvelle dans .NET Framework 4. http://msdn.microsoft.com/en-us/library/system.environment.is64bitprocess.aspx '> http://msdn.microsoft.com/en-us/library/system.environment.is64bitprocess.aspx

Si vous détectez si une application arbitraire s'exécutant sur le système est un processus 64 bits, vous devez déterminer le bitness du système d'exploitation et si celui-ci est 64 bits, appelez IsWow64Process() avec le handle du 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;
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X