Воскресенье, 22.12.2024, 12:16 Приветствую вас Гость | Группа "Гости" 
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: xXxSh@dowxXx, Anton93, Волк-1024  
Определить версию 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
отличная информация, думаю пригодится, благодарю wink

я вот только не совсем понял вот эту часть кода:
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 это чистые версии, а вот уже после них вроде идут сборки

Аа.., даже так..,тогда да, я прост не знал что сборки имеют выше параметр biggrin

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, у меня исходничек есть лови.

Если компонентов требуемых нет, то пропускай.
Автор: не я.
Источник: утерян.
Прикрепления: source.rar (362.0 Kb)



За помощь ставьте +!


Сообщение отредактировал 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;


всегда юзал так, вродебы хватало smile

P.S простите за c++ biggrin
 
  • Страница 1 из 1
  • 1
Поиск:

delphicode.ru © 2008 - 2024 Хостинг от uCoz