[.NET] Как определить версию OS (пока интересует только Windows)?

agaaaa

Как определить версию операционной системы, стоящей на компьютере?
Желательно различать битность, сервиспаки и имя (XP/Server 2003/Vista/Server 2008).

mkrec

то ли в Руссиновиче, то ли в Шрайбере написано, где в реестре и в WinAPI это искать

Marusetta

HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion
это для XP и ниже
все кроме битности
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion - аналогичный для XP64, при этом первый ключ тоже работает.
Для висты не знаю - не пользуюсь.
------------
Это программно. Если просто быстро посмотреть - msinfo32

Ulala

System.Environment.OSVersion
Скорее всего то, что нужно.

mkrec

еще есть VerifyVersionInfo

agaaaa

Эта штука не знает про различия 32/64 и Vista/2008 (у них версии ядер одинаковые).

agaaaa

То, что надо. Но хотелось бы средствами .NET'а
Если не найду другого пути, воспользуюсь.

agaaaa

В ответ на:
VerifyVersionInfo

Мой MSDN про это ничего не знает.

mkrec

А мой знает:

agaaaa

Ага!
Но это даёт тоже, что System.Environment.OSVersion. Только через жопу

kill-still

а как бы в паскаль скрипте (инно сетап) висту определить?
там только по хп включительно. и модули подключать нельзя новые вроде, ни длл.

karkar

GetWindowsVersionEx,
if Version.NTPlatform and (Version.Major = 6) then .
Оставить комментарий
Имя или ник:
Комментарий: