10 Stimmen

Wie lässt sich die Windows-Version ermitteln?

  1. Wie lässt sich die Windows-Version ermitteln? WinXP, Vista oder 7 usw.
  2. 32 oder 64 Bit?

UPD: für .Net 2.0 - 3.5

21voto

SLaks Punkte 832502

Sie suchen nach dem Environment.OSVersion , Environment.Is64BitProcess y Environment.Is64BitOperatingSystem Eigenschaften.

Vor .Net 4.0 können Sie prüfen, ob die Prozess 64-Bit ist, indem geprüft wird, ob IntPtr.Size es 8 und Sie können überprüfen, ob das Betriebssystem 64-Bit ist, indem Sie dieser Code :

public static bool Is64BitProcess
{
    get { return IntPtr.Size == 8; }
}

public static bool Is64BitOperatingSystem
{
    get
    {
        // Clearly if this is a 64-bit process we must be on a 64-bit OS.
        if (Is64BitProcess)
            return true;
        // Ok, so we are a 32-bit process, but is the OS 64-bit?
        // If we are running under Wow64 than the OS is 64-bit.
        bool isWow64;
        return ModuleContainsFunction("kernel32.dll", "IsWow64Process") && IsWow64Process(GetCurrentProcess(), out isWow64) && isWow64;
    }
}

static bool ModuleContainsFunction(string moduleName, string methodName)
{
    IntPtr hModule = GetModuleHandle(moduleName);
    if (hModule != IntPtr.Zero)
        return GetProcAddress(hModule, methodName) != IntPtr.Zero;
    return false;
}

[DllImport("kernel32.dll", SetLastError=true)]
[return:MarshalAs(UnmanagedType.Bool)]
extern static bool IsWow64Process(IntPtr hProcess, [MarshalAs(UnmanagedType.Bool)] out bool isWow64);
[DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError=true)]
extern static IntPtr GetCurrentProcess();
[DllImport("kernel32.dll", CharSet = CharSet.Auto)]
extern static IntPtr GetModuleHandle(string moduleName);
[DllImport("kernel32.dll", CharSet = CharSet.Ansi, SetLastError=true)]
extern static IntPtr GetProcAddress(IntPtr hModule, string methodName);

9voto

BrokenGlass Punkte 153950

Werfen Sie einen Blick auf Environment.OSVersion y Environment.Is64BitOperatingSystem

1voto

FIre Panda Punkte 6321

Sie könnten Folgendes tun

System.OperatingSystem osInfo = System.Environment.OSVersion;

Werfen Sie einen Blick auf este .

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X