2015-07-01 2 views
0

Я провел исследование по способу получения текущей операционной системы системы с использованием C#.Получение операционной системы с использованием C#

Кажется, что нет ни одного ответа, как во многих случаях, но всем им кажется несколько лет. Некоторые из которых я пытался использовать и основывать свой код, не работал.

Ссылки: 1, 2, 3, 4, 5, и т.д.

Так что я придумал мой собственный код:

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

Код просто неверный, он говорит, что версия 6.1 является 'Windows 2008' вместо' Windows 7'. Он также никак не справляется с 'Windows 8'. # – DavidG

+0

Ну * Windows 7 * является ** NT 6.1 **, а также * Windows Server 2008 R2 *. Ознакомьтесь с этим списком для получения дополнительной информации: [Список версий Microsoft Windows] (https://en.wikipedia.org/wiki/List_of_Microsoft_Windows_versions) – MrPaulch

ответ

1

Глядя на this article, Windows 7 на самом деле 6.1, поэтому, я думаю, ваш оператор case недействителен. Там нет никакого способа, с помощью версии, чтобы differenciate Windows 7 с Windows Server 2008

Смежные вопросы