Here is a good code includes Windows 7 and Windows Vista recognaizer.
Code:
internal enum WindowsVersions { UnKnown, Win95, Win98, WinMe,
WinNT3or4, Win2000, WinXP, WinServer2003, WinVista, Win7, Win8, MacOSX, Unix,
Xbox };
internal static WindowsVersions GetCurrentWindowsVersion()
{
// Get OperatingSystem information from the system
namespace.
System.OperatingSystem osInfo = System.Environment.OSVersion;
// Determine the platform.
if (osInfo.Platform == System.PlatformID.Win32Windows)
{
// Platform is Windows 95, Windows 98, Windows 98 Second
Edition, or Windows Me.
switch (osInfo.Version.Minor)
{
case 0:
//Console.WriteLine("Windows 95");
return WindowsVersions.Win95;
case 10:
//if
(osInfo.Version.Revision.ToString() == "2222A")
//
Console.WriteLine("Windows 98 Second Edition");
//else
//
Console.WriteLine("Windows 98");
return WindowsVersions.Win98;
case
90:
//Console.WriteLine("Windows Me");
return WindowsVersions.WinMe;
}
}
else if
(osInfo.Platform == System.PlatformID.Win32NT)
{
// Platform is Windows NT 3.51, Windows NT 4.0, Windows
2000, or Windows XP.
switch (osInfo.Version.Major)
{
case 3:
case 4:
//Console.WriteLine("Windows NT
3.51"); // = 3
//Console.WriteLine("Windows NT
4.0"); // = 4
return WindowsVersions.WinNT3or4;
case 5:
switch (osInfo.Version.Minor)
{
case 0:
//name = "Windows 2000";
return WindowsVersions.Win2000;
case 1:
//name = "Windows XP";
return WindowsVersions.WinXP;
case 2:
//name = "Windows Server 2003";
return
WindowsVersions.WinServer2003;
}
break;
case 6:
switch (osInfo.Version.Minor)
{
case 0:
// Windows Vista or Windows Server 2008 (distinct by rpoduct type)
return WindowsVersions.WinVista;
case 1:
return WindowsVersions.Win7;
case 2:
return
WindowsVersions.Win8;
}
break;
}
}
else if
(osInfo.Platform == System.PlatformID.Unix)
{
return WindowsVersions.Unix;
}
else if
(osInfo.Platform == System.PlatformID.MacOSX)
{
return WindowsVersions.MacOSX;
}
else if
(osInfo.Platform == PlatformID.Xbox)
{
return WindowsVersions.Xbox;
}
return WindowsVersions.UnKnown;
}
2013/07/02: added WIN8 support
And what about windows 8?
ReplyDeletewindows 8 = NT 6.2
ReplyDeleteI updated the code.
You comments 'Windows Vista or Windows Server 2008 (distinct by product type)' mean you should get the ProductType not using Pinvoke and OSVERSIONINFOEX!? Where is that ProductType in .NET Version prop?
ReplyDeleteThanx.
Mike
windows 8.1 = 6(mayor), 3(minor)
ReplyDeleteupdate.
here you can find the most recent versions of windows: http://msdn.microsoft.com/en-us/library/windows/desktop/ms724832(v=vs.85).aspx
ReplyDeletebu yazdık da ne bok oldu
ReplyDelete