使用c#获取操作系统

时间:2015-07-01 08:38:25

标签: c#

我一直在使用C#获取当前系统操作系统的方式进行研究

似乎没有一个单一的答案,就像许多情况一样,但它们似乎都只有几年了。我尝试使用的一些代码基于无法正常工作

参考文献:12345

所以我想出了自己的代码:

var os = System.Environment.OSVersion;
string currentOS = null;

switch(os.Platform)
{
    case PlatformID.Win32S:
        currentOS = "Windows 3.1";
        break;
    case PlatformID.Win32Windows:
        switch(os.Version.Minor)
        {
            case 0:
                currentOS = "Windows 95";
                break;
            case 10:
                currentOS = "Windows 98";
                break;
            default:
                currentOS = "Unknown";
                break;
        }
        break;
    case PlatformID.Win32NT:
        switch(os.Version.Major)
        {
            case 3:
                currentOS = "Windows NT 3.51";
                break;
            case 4:
                currentOS = "Windows NT 4.0";
                break;
            case 5:
                switch(os.Version.Minor)
                {
                    case 0:
                        currentOS = "Windows 2000";
                        break;
                    case 1:
                        currentOS = "Windows XP";
                        break;
                    case 2:
                        currentOS = "Windows 2003";
                        break;
                    default:
                        currentOS = "Unknown";
                        break;
                }
                break;
            case 6:
                switch(os.Version.Minor)
                {
                    case 0:
                        currentOS = "Windows Vista";
                        break;
                    case 1:
                        currentOS = "Windows 2008";
                        break;
                    case 2:
                        currentOS = "Windows 7";
                        break;
                    default:
                        currentOS = "Unknown";
                        break;
                }
                break;
            default:
                currentOS = "Unknown";
                break;
        }
        break;
    case PlatformID.WinCE:
        currentOS = "Windows CE";
        break;
    case PlatformID.Unix:
        currentOS = "Unix";
        break;
    default:
        currentOS = "Unknown";
        break;
}

我在笔记本电脑上测试了这段代码,运行Windows 7,它返回windows 2008。可能是什么原因,我应该改变什么呢?

4 个答案:

答案 0 :(得分:3)

由于6.1适用于Windows 7和Windows Server 2008,因此6.2是Windows 8。

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

答案 1 :(得分:2)

据微软称 https://msdn.microsoft.com/en-us/library/windows/desktop/ms724832(v=vs.85).aspx

在您的情况下,6.1是指Window 7/Windows Server 2008 R2

答案 2 :(得分:1)

查看this article,Windows 7实际上是6.1,所以我猜你的case语句无效。使用该版本无法将Windows 7与Windows 2008服务器区分开来

答案 3 :(得分:1)

official list of Windows versions开始,版本6.1为Windows 7,但您的代码显示为Windows 2008(顺便说一下,这不是一件事。)