我一直在使用C#
获取当前系统操作系统的方式进行研究。
似乎没有一个单一的答案,就像许多情况一样,但它们似乎都只有几年了。我尝试使用的一些代码基于无法正常工作。
所以我想出了自己的代码:
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
。可能是什么原因,我应该改变什么呢?
答案 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
(顺便说一下,这不是一件事。)