如何确定哪个版本的Windows?

| 如何确定哪个版本的Windows? WinXP,Vista或7等 32位还是64位? UPD:适用于.Net 2.0-3.5     
已邀请:
        您正在寻找
Environment.OSVersion
Environment.Is64BitProcess
Environment.Is64BitOperatingSystem
属性。 在.Net 4.0之前,您可以通过检查
IntPtr.Size
是否为
8
来检查进程是否为64位,并可以使用以下代码检查操作系统是否为64位:
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);
    
        看一下
Environment.OSVersion
Environment.Is64BitOperatingSystem
    
        你可以做
System.OperatingSystem osInfo = System.Environment.OSVersion;
看看这个。     

要回复问题请先登录注册