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 ?
Réponses
Trop de publicités?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)
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;
}
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 :
- Détermine le nom du système d'exploitation actuel. (par exemple, "Microsoft Windows 7 Enterprise")
- Détecter la version du système d'exploitation actuel. (par exemple "Microsoft Windows NT 6.1.7600.0")
- Déterminez si le système d'exploitation actuel est un système d'exploitation 64 bits. 64 bits.
- Déterminez si le processus actuel est un processus 64 bits.
- 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;
}