在 .NET 中检测 Windows 7 版

Detect Windows 7 edition in .NET

如何在 .NET 中检测 Windows 7(或更高版本)中的版本?

在 IIS 中,Windows 身份验证不是家庭高级版的选项(在站点的身份验证下),但它是终极版的选项。所以我需要检查版本,以便知道何时对网站使用基本身份验证。下面的代码允许您检测 OS 版本。这个对象能检测到版本吗?或者我应该使用其他命令吗?

OperatingSystem osversion = System.Environment.OSVersion;

Windows 的版本:

Detect Windows version in .net

我找到了这篇文章,但我正在努力了解 C++ 部分。

http://www.codeguru.com/cpp/misc/misc/system/article.php/c8973/Determine-Windows-Version-and-Edition.htm

参见 GetProductInfo() 文档:

https://msdn.microsoft.com/en-us/library/windows/desktop/ms724358(v=vs.85).aspx

C# 源代码:

    using System.Runtime.InteropServices;

    [DllImport("Kernel32.dll")]
    internal static extern bool GetProductInfo(
        int osMajorVersion,
        int osMinorVersion,
        int spMajorVersion,
        int spMinorVersion,
        out int edition);

        int edition = -1;

        if (GetProductInfo(6, 0, 0, 0, out edition))
        {
            Console.WriteLine("Edition: " + edition);
        }

C++ 等价物:

    //BOOL WINAPI GetProductInfo(  
    //_In_  DWORD  dwOSMajorVersion,
    //_In_  DWORD  dwOSMinorVersion,
    //_In_  DWORD  dwSpMajorVersion,
    //_In_  DWORD  dwSpMinorVersion,
    //_Out_ PDWORD pdwReturnedProductType
    //);