/// <summary>
/// Description : Get Operating System Version
/// </summary>
/// <param name="sOsVersionName"></param>
/// <param name="bRaiseError"></param>
public static void GetOsVersion(ref string sOsVersionName, bool bRaiseError = true)
{
//TODO PVM This is wrong for Windows XP 64 bit, I have code somewhere for that. Also not catering for Windows 7
sOsVersionName = string.Empty;
try
{
OperatingSystem verinfo = Environment.OSVersion;
switch (verinfo.Platform)
{
case PlatformID.Win32NT:
switch (verinfo.Version.Major)
{
case 3:
sOsVersionName = "Windows NT 3.51";
break;
case 4:
sOsVersionName = "Windows NT 4.0";
break;
case 5:
switch (verinfo.Version.Minor)
{
case 0:
sOsVersionName = "Windows 2000";
break;
case 1:
sOsVersionName = "Windows XP";
break;
case 2:
sOsVersionName = "Windows 2003";
break;
}
break;
case 6:
switch (verinfo.Version.Minor)
{
case 0:
// or Windows Server 2008, but system runs on client edition of windows generally, so just show Windows Vista
sOsVersionName = "Windows Vista";
break;
case 1:
// or Windows Server 2008 R2, but system runs on client edition of windows generally, so just show Windows 7
sOsVersionName = "Windows 7";
break;
case 2:
sOsVersionName = "Windows 8";
break;
case 3:
sOsVersionName = "Windows 8.1";
break;
default:
break;
}
break;
}
break;
case PlatformID.Win32Windows:
switch (verinfo.Version.Major)
{
case 4:
switch (verinfo.Version.Minor)
{
case 0:
sOsVersionName = "Windows 95";
break;
case 10:
sOsVersionName = "Windows 98";
break;
case 90:
sOsVersionName = "Windows Me";
break;
}
break;
}
break;
case PlatformID.Win32S:
sOsVersionName = "Windows 32s";
break;
}
}
catch (Exception)
{
if (bRaiseError)
throw ();
}
}