Как получить название ОС, в которой код выполняется с использованием C #? - PullRequest
3 голосов
/ 16 февраля 2011

У меня есть приложение на C #, которое должно работать как в WIn 7, так и в Win XP.Мне нужно проверить ИМЯ ОС в исходном коде C #, прежде чем распространять MSI & EXE среди клиентов.

Не вдаваясь в подробности управления версиями, мой код хочет проверить, является ли это 32-битной Windows XP или 64-битной Windows 7.

Могу ли я получить помощь?относительно этого.

Рассматриваемая ОС - это 64-битная Win7 и 32-битная Win XP.

Ответы [ 6 ]

4 голосов
/ 16 февраля 2011

Вы можете получить дружественное имя операционной системы, используя WMI.

ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT Caption FROM Win32_OperatingSystem");
String operatingSystem = String.Empty;

foreach (ManagementObject query in searcher.Get())
{
   operatingSystem = query["Caption"].ToString();
   break;
}

Вы можете использовать WMI Code Creator , отличный инструмент от Microsoft для генерации запросов WMI.

3 голосов
/ 16 февраля 2011

Вы сможете получить всю необходимую информацию из класса среды , в частности, OSVersion и Is64BitOperatingSystem .

2 голосов
/ 16 февраля 2011

Да, все дают правильное направление. Environment.OSVersion предоставляет вам версию ОС, но как узнать, является ли ее Windows XP или 7

Нужно сравнить по версиям, вот здесь список обеспокоенности

Windows XP 5.1.2600 Текущая версия SP3

Windows XP Professional x64 Edition 5.2.3790

Текущая версия Windows Vista 6.0.6000 изменена на 6.0.6002 с пакетом обновления 2

Windows 7 6.1.7600

Подробнее Номера версий ОС Windows

if (Environment.OSVersion.Version.ToString().Equals("5.1.2600"))
{
    // windows xp 32-Bit with service pack 3
}
else if (Environment.OSVersion.Version.ToString().Equals("  6.1.7600"))
{
    // windows 7
}
1 голос
/ 16 февраля 2011

Обратите внимание на свойство System.Environment.OSVersion.Это тип OperatingSystem , который должен содержать всю необходимую информацию.

0 голосов
/ 16 февраля 2011

Взгляните на класс Environment . Он содержит методы для того, что вам нужно.

Краткий ответ:

Console.WriteLine("OSVersion: {0}", Environment.OSVersion.ToString());
0 голосов
/ 16 февраля 2011

Вы должны проверить Environment.OSVersion и Environment.Is64BitOperatingSystem.

Хотя вам необходимо вручную отобразить возвращенную информацию в соответствующую строку.

...