using BackupEssentials.Sys; using Microsoft.Win32; using System; namespace BackupEssentials.Utils{ static class WindowsVersion{ private static string CachedVersionName; public static string Get(){ if (CachedVersionName != null)return CachedVersionName; try{ RegistryKey key = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows NT\CurrentVersion"); if (key != null)return CachedVersionName = (string)key.GetValue("ProductName"); }catch{} return CachedVersionName = (GetFromEnvironment() ?? Settings.Default.Language["About.WinVersion.Unknown"]); } private static string GetFromEnvironment(){ Version version = Environment.OSVersion.Version; switch(version.Major){ case 10: return "Windows 10"; case 6: switch(version.Minor){ case 0: return "Windows Vista"; case 1: return "Windows 7"; case 2: return "Windows 8"; case 3: return "Windows 8.1"; } break; case 5: switch(version.Minor){ case 0: return "Windows 2000"; case 1: return "Windows XP"; case 2: return "Windows XP"; } break; } return null; } /// <summary> /// Full support is only available on Windows 7 and newer. Returns true if the used OS version has full support. /// </summary> public static bool IsFullySupported(){ Version version = Environment.OSVersion.Version; return version.Major > 6 || (version.Major == 6 && version.Minor >= 1); } } }