Как получить версию Windows
Как получить версию Windows
Как получить версию Windows Как получить версию windows? Способ 1 type tosversion=(osunknown, osunknown9x, osunknownnt, oswin95, oswin98, oswin98se, oswinme, oswinnt, oswin2000, osxp); function getosversion : tosversion; var osverinfo : tosversioninfo; majorver, minorver : integer; begin result := osunknown; osverinfo.dwosversioninfosize := sizeof(tosversioninfo); if getversionex(osverinfo) then begin majorver := osverinfo.dwmajorversion; minorver := osverinfo.dwminorversion; case osverinfo.dwplatformid of ver_platform_win32_nt : case majorver of 4:result := oswinnt; 5:if minorver=0 then result := oswin2000 else if minorver=1 then result := osxp else result := osunknownnt; else result := osunknownnt; end; {case majorver of} ver_platform_win32_windows : case majorver of 4: case minorver of 0:result := oswin95; 10: if osverinfo.szcsdversion[1] = 'a' then result := oswin98se else result := oswin98; 90: result := oswinme; else result := osunknown9x; end;{case minorver of} else result := osunknown9x; end{case majorver of} else result := osunknown; end;{case osverinfo.dwplatformid of} end;{if getversionex(osverinfo) then} end; procedure tform1.button1click(sender: tobject); begin case getosversion of osunknown: showmessage('unknown'); oswin95: showmessage('win95'); oswin98: showmessage('win98'); oswin98se: showmessage('win98se'); oswinme: showmessage('winme'); oswinnt: showmessage('winnt'); oswin2000: showmessage('win2000'); osxp: showmessage('xp'); end; end; **************************************************************************************************** Как получить версию windows? Способ 2 procedure tform1.winver; var winv: word; begin winv := getversion and $0000ffff; edit6.text := inttostr(lo(winv))+'.'+inttostr(hi(winv)); end; Функция выдает следующее - 4.10 Как можно таким же простым способом получить полную версию - 4.10.222 ***************************************************************************************************** Как получить версию windows? Способ 3 Вот еще один пример. Мне он нравиться больше всего. Я его обычно использую в своих программах. Он гибкий и предоставляет максимум информации. {Объявление процедур и констант} function getwindowsversion1: string; function whatwindowsisinstalled : string; const ver_nt_workstation = 0; ver_nt_domain_controller = 1; ver_nt_server = 2; ver_suite_smallbusiness = 1; ver_suite_enterprise = 2; ver_suite_backoffice = 4; ver_suite_communications = 8; ver_suite_terminal = $10; ver_suite_smallbusiness_restricted = $20; ver_suite_embeddednt = $40; ver_suite_datacenter = $80; ver_suite_singleuserts = $100; ver_suite_personal = $200; ver_suite_blade = $400; type tosversioninfoexa = packed record old : tosversioninfoa; wservicepackmajor : word; wservicepackminor : word; { wsuitemask Набор битовых флагов, определяющих компоненты windows ver_suite_backoffice Установлен компонент microsoft backoffice. ver_suite_blade Установлен компонент windows .net web server. ver_suite_datacenter Установлена windows 2000 или компонент windows .net datacenter server ver_suite_enterprise Установлена windows 2000 advanced server или компонент windows .net enterprise server. ver_suite_personal Установлена windows xp home edition. ver_suite_smallbusiness Установлен microsoft small business server. ver_suite_smallbusiness_restricted Установлен microsoft small business server с ограничительной лицензией для клиентов ver_suite_terminal Установлен компонент terminal services. } wsuitemask : word; {wproducttype Дополнительная информация о типе операционной системы ver_nt_workstation Операционная система windows nt 4.0 workstation, windows 2000 professional, windows xp home edition, или windows xp professional. ver_nt_domain_controller Операционная система является контроллером домена. ver_nt_server Операционная система является сервером. } wproducttype : byte; wreserved : byte; end; ... {Реализация} function whatwindowsisinstalled : string; var verinfo : tosversioninfoexa; begin fillchar(verinfo, sizeof(verinfo), 0); verinfo.old.dwosversioninfosize := sizeof(tosversioninfoexa); if not getversionexa(verinfo.old) then begin verinfo.old.dwosversioninfosize := sizeof(tosversioninfoa); getversionexa(verinfo.old); end; case verinfo.old.dwplatformid of ver_platform_win32_windows: if (verinfo.old.dwmajorversion = 4) and (verinfo.old.dwbuildnumber = 950) then result := 'windows 95' else if (verinfo.old.dwmajorversion = 4) and (verinfo.old.dwminorversion = 10) and (verinfo.old.dwbuildnumber = 1998) then result := 'windows 98' else if (verinfo.old.dwminorversion = 90) then result := 'windows me'; ver_platform_win32_nt: if verinfo.old.dwmajorversion = 3 then result := 'windows nt 3.51' else if verinfo.old.dwmajorversion = 4 then result := 'windows nt 4.0' else if verinfo.old.dwmajorversion = 5 then if verinfo.old.dwminorversion = 0 then result := 'windows 2000' else if verinfo.old.dwminorversion = 1 then result := 'windows xp'; ver_platform_win32s: result := 'win32s'; end; end; function getwindowsversion1: string; {$ifdef win32} const swindowsversion = '%.3d'; var ver: tosversioninfo; platform: string[4]; begin ver.dwosversioninfosize := sizeof(ver); getversionex(ver); with ver do begin case dwplatformid of ver_platform_win32s: platform := '32s'; ver_platform_win32_windows: begin dwbuildnumber := dwbuildnumber and $0000ffff; if (dwmajorversion > 4) or ((dwmajorversion = 4) and (dwminorversion >= 10)) then platform := '98' else platform := '95'; end; ver_platform_win32_nt: platform := 'nt'; end; result := trim(format(swindowsversion, [dwbuildnumber])); end; end; {$else} const swindowsversion = 'windows%s %d.%d'; snt: array[boolean] of string[3] = ('', ' nt'); var ver: longint; begin ver := getversion; result := format(swindowsversion, [snt[not boolean(hibyte(loword(ver)))], lobyte(loword(ver)), hibyte(loword(ver))]); end; {$endif win32} Пример вызова label1.caption := whatwindowsisinstalled+' (build '+getwindowsversion1+')'; Источник: http://ogoncharenko.narod.ru