Определить версию Windows
|
|
dolphin | Дата: Четверг, 22.03.2012, 13:31 | Сообщение # 1 |
Администратор
Сообщений: 906
Статус: Offline
| Нужно определить какая версия Windows установлена, примеры которые можно найти определяют либо до ХР либо работают из под учётки админа вроде бы (определяют через реестр)
У кого какие варианты есть?
Система: Windows 10 x64, Kali Linux Среды программирования: Delphi 7, Delphi 10.x
Я не профессионал, я всего лишь любитель Я не вредитель, я всего лишь теоретик
|
|
| |
Волк-1024 | Дата: Четверг, 22.03.2012, 13:50 | Сообщение # 2 |
Авторитетный
Зарегистрирован: 24.07.2011
Группа: Модераторы
Сообщений: 469
Статус: Offline
| Доступно только для пользователей
Вроде работет...
Pascal, C\C++, Assembler, Python
Сообщение отредактировал Волк-1024 - Четверг, 22.03.2012, 13:53 |
|
| |
dolphin | Дата: Четверг, 22.03.2012, 14:16 | Сообщение # 3 |
Администратор
Сообщений: 906
Статус: Offline
| Спасибо, вот эта информация кстати пригодилась Тык
Исходный код с доработкой
Доступно только для пользователей
Система: Windows 10 x64, Kali Linux Среды программирования: Delphi 7, Delphi 10.x
Я не профессионал, я всего лишь любитель Я не вредитель, я всего лишь теоретик
Сообщение отредактировал dolphin - Четверг, 22.03.2012, 15:18 |
|
| |
xXxSh@dowxXx | Дата: Четверг, 22.03.2012, 21:21 | Сообщение # 4 |
Авторитетный
Зарегистрирован: 22.01.2012
Группа: Модераторы
Сообщений: 702
Статус: Offline
| отличная информация, думаю пригодится, благодарю
я вот только не совсем понял вот эту часть кода: Code if info.dwBuildNumber = 6000 then Result := 'Windows Vista'; if info.dwBuildNumber > 6000 then Result := 'Windows Vista сборка '+IntToStr(info.dwBuildNumber);
и эту аналогично... Code if info.dwBuildNumber = 7600 then Result := 'Windows 7'; if info.dwBuildNumber > 7600 then Result := 'Windows 7 сборка '+IntToStr(info.dwBuildNumber);
получается что он тебе будет выдавать оба ответа или я что то упустил, ведь исключения то одинаковые?
Сообщение отредактировал xXxSh@dowxXx - Четверг, 22.03.2012, 21:22 |
|
| |
dolphin | Дата: Четверг, 22.03.2012, 22:23 | Сообщение # 5 |
Администратор
Сообщений: 906
Статус: Offline
| 6000 и 7600 это чистые версии, а вот уже после них вроде идут сборки как я понял. Запусти у себя, поймёшь что 2 ответа не будет.
Кстати Windows 7 и Windows Server 2008 R2 имеют 6.1.7600 я пока не разобрался как их отличить. По сути конешно это те же виста и 7 тогда можно упростить и сделать
Code if info.dwBuildNumber >= 6000 then Result := 'Windows Vista';
Code if info.dwBuildNumber >= 7600 then Result := 'Windows 7';
Система: Windows 10 x64, Kali Linux Среды программирования: Delphi 7, Delphi 10.x
Я не профессионал, я всего лишь любитель Я не вредитель, я всего лишь теоретик
Сообщение отредактировал dolphin - Четверг, 22.03.2012, 23:06 |
|
| |
xXxSh@dowxXx | Дата: Пятница, 23.03.2012, 00:11 | Сообщение # 6 |
Авторитетный
Зарегистрирован: 22.01.2012
Группа: Модераторы
Сообщений: 702
Статус: Offline
| Quote (dolphin) 6000 и 7600 это чистые версии, а вот уже после них вроде идут сборки Аа.., даже так..,тогда да, я прост не знал что сборки имеют выше параметр
Quote (dolphin) Кстати Windows 7 и Windows Server 2008 R2 имеют 6.1.7600 я пока не разобрался как их отличить. в принципе за разницу можно взять дополнительную проверку на любой другой параметр, который не может быть в обоих этих системах, к сожалению под рукой нет ни семерки ни сервера, не могу проверить, но думаю это вовсе не проблема...
Сообщение отредактировал xXxSh@dowxXx - Пятница, 23.03.2012, 11:11 |
|
| |
cool1 | Дата: Суббота, 24.03.2012, 14:39 | Сообщение # 7 |
Участник
Зарегистрирован: 14.07.2010
Группа: Пользователи
Сообщений: 238
Статус: Offline
| Насчет работы с wnidows, у меня исходничек есть лови. Если компонентов требуемых нет, то пропускай. Автор: не я. Источник: утерян.
За помощь ставьте +!
Сообщение отредактировал cool1 - Воскресенье, 25.03.2012, 06:35 |
|
| |
dolphin | Дата: Воскресенье, 25.03.2012, 14:17 | Сообщение # 8 |
Администратор
Сообщений: 906
Статус: Offline
| cool1, Ничего нового там не нашёл, но всёравно спасибо!
Пиреписал сишнию структуру из мсдн
Доступно только для пользователей
по идее PType : Byte; должно было определить тип системы- серверная или нет. но всёравно не определяет.
Окончательный вариант пока такой
Доступно только для пользователей
Система: Windows 10 x64, Kali Linux Среды программирования: Delphi 7, Delphi 10.x
Я не профессионал, я всего лишь любитель Я не вредитель, я всего лишь теоретик
Сообщение отредактировал dolphin - Воскресенье, 25.03.2012, 14:18 |
|
| |
XSPY | Дата: Воскресенье, 25.03.2012, 19:01 | Сообщение # 9 |
Продвинутый
Зарегистрирован: 28.01.2010
Группа: Пользователи
Сообщений: 263
Статус: Offline
| dolphin, глянь на ачате пост SLESH'a-у него лучшая в нете (на СИ) реализация определения версии...
Я не крекер,а программист! Я не преступник-я свободный человек! Лучше один раз накодить,чем сто раз качать билды!
|
|
| |
C@T | Дата: Суббота, 31.03.2012, 18:15 | Сообщение # 10 |
Авторитетный
Зарегистрирован: 06.03.2010
Группа: Модераторы
Сообщений: 265
Статус: Offline
| Code string OsVer() { OSVERSIONINFO v; ZeroMemory(&v, sizeof(OSVERSIONINFO)); v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); GetVersionEx(&v); return "NT " + IntToStr(v.dwMajorVersion)+"."+ IntToStr(v.dwMinorVersion)+"."+ IntToStr(v.dwBuildNumber)+" "+v.szCSDVersion; }
структура вот(взял из студии),
Code typedef struct _OSVERSIONINFOA { DWORD dwOSVersionInfoSize; DWORD dwMajorVersion; DWORD dwMinorVersion; DWORD dwBuildNumber; DWORD dwPlatformId; CHAR szCSDVersion[ 128 ]; // Maintenance string for PSS usage } OSVERSIONINFOA, *POSVERSIONINFOA, *LPOSVERSIONINFOA;
всегда юзал так, вродебы хватало
P.S простите за c++
|
|
| |