Wie kann ich feststellen, ob meine Anwendung wird als 32-Bit- oder 64-Bit-Anwendung ausgeführt wird?

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

  •  06-07-2019
  •  | 
  •  

Frage

Wie kann ich feststellen, ob meine Bewerbung (in Visual Studio 2008 kompiliert als Jede CPU ) läuft als 32-Bit- oder 64-Bit-Anwendung?

War es hilfreich?

Lösung

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

Andere Tipps

Wenn Sie mit .NET 4.0, es ist ein Einzeiler für die aktuelle Prozess:

Environment.Is64BitProcess

Referenz: Environment.Is64BitProcess Immobilien (MSDN)

Ich habe diesen Code von Martijn Boven , dass der Trick funktioniert:

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

In diesem Codebeispiel von Microsoft All-In-One Code Framework Ihre Frage beantworten können:

Detect die Prozessplattform in C # (CSPlatformDetector) Lauf

  

Das CSPlatformDetector Codebeispiel zeigt die folgenden Aufgaben   im Zusammenhang mit Plattformerkennung:

     
      
  1. Erkennen Sie den Namen des aktuellen Betriebssystems. (z. "Microsoft Windows 7 Enterprise")
  2.   
  3. Ermitteln Sie die Version des aktuellen Betriebssystems. (z. "Microsoft Windows NT 6.1.7600.0")
  4.   
  5. Sie fest, ob das aktuelle Betriebssystem ist ein 64-Bit-Betriebssystem.
  6.   
  7. Sie fest, ob der aktuelle Prozess ein 64-Bit-Prozess ist.
  8.   
  9. Sie fest, ob ein beliebiger Prozess auf dem System läuft, ist 64-Bit.
  10.   

Wenn Sie nur, ob der aktuell laufenden Prozess bestimmen wollen, ist ein 64-Bit Dabei können Sie verwenden, um die Environment.Is64BitProcess Eigenschaft, dass ist neu in .NET Framework 4.

Und wenn Sie möchten, erkennen, ob eine beliebige Anwendung auf dem System ausgeführt ist ein 64-Bit-Prozess, müssen Sie das OS Bitness bestimmen, und wenn es sich um 64-Bit, rufen IsWow64Process() mit dem Zielprozess Griff:

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;
}

In .NET Standard-können Sie System.Runtime.InteropServices.RuntimeInformation.OSArchitecture verwenden

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top