Wie kann ich feststellen, ob meine Anwendung (in Visual Studio 2008 als beliebige CPU kompiliert ) als 32-Bit- oder 64-Bit-Anwendung ausgeführt wird?
70
if (IntPtr.Size == 8)
{
// 64 bit machine
}
else if (IntPtr.Size == 4)
{
// 32 bit machine
}
Wenn Sie .NET 4.0 verwenden, ist dies ein Einzeiler für den aktuellen Prozess:
Referenz: Environment.Is64BitProcess-Eigenschaft (MSDN)
quelle
Ich habe diesen Code von Martijn Boven gefunden , der den Trick macht:
public static bool Is64BitMode() { return System.Runtime.InteropServices.Marshal.SizeOf(typeof(IntPtr)) == 8; }
quelle
Dieses Codebeispiel von Microsoft All-In-One Code Framework kann Ihre Frage beantworten:
Erkennen Sie die Prozessausführungsplattform in C # (CSPlatformDetector).
Wenn Sie nur feststellen möchten, ob der aktuell ausgeführte Prozess ein 64-Bit-Prozess ist, können Sie die in .NET Framework 4 neue Eigenschaft Environment.Is64BitProcess verwenden .
Wenn Sie feststellen möchten, ob es sich bei einer beliebigen Anwendung, die auf dem System ausgeführt wird, um einen 64-Bit-Prozess handelt, müssen Sie die Betriebssystembitität ermitteln. Wenn es sich um eine 64-Bit-Anwendung handelt, rufen Sie das Zielprozesshandle auf
IsWow64Process()
: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; }
quelle
In .Net Standard können Sie verwenden
System.Runtime.InteropServices.RuntimeInformation.OSArchitecture
quelle