Delphi узнать версию windows

Delphi узнать версию windows

Как программно узнать версию Windows, из-под которой запускается программа?
Предполагаю, что надо писать
<$IFDEF>
а что должно быть тут?

Я просто не знаю обозначения всех осей. 95-й, NT, 98-й и. т. д
Выручайте!


MBo ( 2003-01-13 08:35 ) [1]

GetVersionEx
а <$IFDEF>— только при компиляции влияет


Сергей Бушин ( 2003-01-13 08:51 ) [2]

Для того чтобы программно узнать версию Windows под которой запускается Ваше приложение есть несколько способов.
1. Win API — GetVersion, GetVersionEx
2. В Delphi есть переменная Win32Platform. Нажмите F1 и узнаете.
Есть наверно и еще, не знаю, но все это можно найти простым нажатием F1.
А то что предлагает Вы, то это называется директивы условной компиляции. Например начиная с Delphi 6 имеются такая директива как MSWINDOWS, а в Kylux есть LINUX, если Вы в своем коде напишите:

<$IFDEF MSWINDOWS>
MyWinodwsProc;
<Данный участок будет компилироваться только в Windows, т.к. в Delphi определен MSWINDOWS, а в Kylux это компилятор воспринимать не будет, т.к. ему не известно MSWINDOWS>
<$ENDIF>
.
<$IFDEF LINUX>
MyLinusProc;//тоже самое только наоборот
<$ENDIF>

Имеется способ определить под какой версией Delphi происходит компиляция при помощи директив условной компиляции, но узнать версию Windows при помощи директив условной компиляции Вы не сможете.

Извините, но иногда надо читать книги. Данный момент, очень хорошо описан в любой начинающей книге.


Бук ( 2003-01-13 08:55 ) [3]


Delirium^.Tremens ( 2003-01-13 09:20 ) [4]

Сказали же уже, что это только при компиляции, вот пример узнавания в run-time:

var osInfo: OSVERSIONINFO;
.
osInfo.dwOSVersionInfoSize := sizeof(OSVERSIONINFO);
GetVersionEx(osInfo);
if osInfo.dwPlatformId = VER_PLATFORM_WIN32_NT
then sysName := «Windows NT «+ IntToStr(osInfo.dwMajorVersion)
else if osInfo.dwPlatformId = VER_PLATFORM_WIN32_WINDOWS
then sysName := «Windows «+ IntToStr(osInfo.dwMajorVersion);

Не нужно писать свой код. Есть уже готовая информация: Win32Platform, Win32MajorVersion, Win32MinorVersion, Win32BuildNumber. Остается только проверить.


GrayWolf ( 2003-01-13 21:05 ) [6]

Я бы добавил еще такую информацию (но идея Ю. Зотова верна!):

function GetOperatingSystem : integer;
var

osVerInfo : TOSVersionInfo;
majorVer, minorVer : Integer;
begin

notidealrunner

пятница, 21 июня 2019 г.

Получаем версию операционной системы Windows в Delphi 7

Есть такая известная функция получения версии операционной системы Windows – GetVersionEx, но начиная с версии Windows 8 и выше данная функция работает должным образом только совместно с файлом манифеста.

Читайте также:  Драйверы mac os для мфу

Создайте новый проект. Сохраните проект с именем p21.dpr. Основной модуль назовите p21_unit1.pas. В каталоге проекта создайте файл манифеста Windows.manifest. Содержимое файла должно быть следующее:

Далее нам необходимо в каталоге проекта создать файл ресурсов компиляции с именем Windows.rc. Содержимое файла компиляции будет следующее:

1 24 «Windows.manifest»

То есть мы в качестве ресурсов нашего приложения указываем наш файл манифеста.

Файл ресурсов компиляции Windows.rc необходимо скомпилировать при помощи компилятора ресурсов brcc32.exe, этот компилятор ресурсов расположен в каталоге, где расположены бинарные файлы Delphi, у меня это каталог D:\Programs\Delphi7\Files\Delphi7\Bin. Убедитесь, что данный каталог добавлен в переменную окружения Path. Запустите командную строку Windows, перейдите в каталог проекта и выполните команду компиляции ресурсов (Смотрите рисунок 1).

В качестве результата в каталоге проекта вы получите файл ресурсов Windows.RES, который необходимо в файле проекта p21.dpr подключить. Смотрите код ниже:

Разместите на форме Form1 текстовую метку Lable1. В метке Label1 мы будем отображать версию операционной системы Windows (Смотрите рисунок 2).

В обработчике показа формы Form1 мы метке Label1 присваиваем результат возврата функции WinName.

Рассмотрим две функции, которые получают версию операционной системы Windows.

При помощи функции GetVersionEx мы получаем номер основной и второстепенный для нашей операционной системы Windows. Преобразуем основной и второстепенный номер в строку, выполняем соединение этих строк в одну и возвращаем результат выполнения функции WinVerNum.

При помощи функции WinName мы получаем версию операционной системы Windows и возвращаем ее в виде строки.

Результат работы программы (Смотрите рисунок 3).

Получить версию windows

Получить версию билда ехе-файла
Надо узнать и сравнить версии билда ехе файла, чтобы после каждого изменения не скидывать самому.

Установил Windows Vista SP2 бета версию, теперь не могу перейти на Windows XP
Всем Здравствуйте. Помогите может кто сталкивался с такой бедой, короче установил висту sp2 бета.

Как обновить версию Windows 10 Home до Windows 10 Pro?
Есть лицензионная Windows 10 Home. Хочу обновить ее до Pro версии. На сайте предлагают только.

Получить версию ОС
Почему данные не считываются? Выводятся нули. ЧЯДНТ? #pragma once #if !defined (__SAMPLE_DLL_H__).

в дельфе нет такого модуля

Добавлено через 22 минуты
нашел. может кому пригодится

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Получить версию продукта
Есть необходимость получить версию файла (exe / dll), которая отображается если в эксполере перейти.

Читайте также:  New rule windows firewall что это

Получить версию файла
Application.ProductVersion показывает версию в виде 0.0.5.7, а мне нужно получитьвесию без точек то.

Получить версию приложения
Как получить информацию о версии приложения программно? Т.е ту версию, которая устанавливается в.

Получить версию через WinAPI.
Нужно получить версию Windows, используя WinAPI, а конкретно функцию GetVersionEx. Функция.

Проверка на версию windows

Всем привет. Требуется определить версию ОС ниже win vista. Если ниже то False, если выше висты (7, 8, 8.1, 10) то True.
Версию определяю так: CheckWin32Version(), только вот как это совместить?

Добавлено через 11 минут
Сделал так:

Проверка на новую версию..
Помогите реализовать автоматическую проверку на обновление программы через интернет. Чтобы при.

Установил Windows Vista SP2 бета версию, теперь не могу перейти на Windows XP
Всем Здравствуйте. Помогите может кто сталкивался с такой бедой, короче установил висту sp2 бета.

Как обновить версию Windows 10 Home до Windows 10 Pro?
Есть лицензионная Windows 10 Home. Хочу обновить ее до Pro версии. На сайте предлагают только.

определить версию windows
гомпода програмисты возможно как то програмно определить версию windows,что бы потом это.

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Получить версию windows
как получить версию windows без админ прав ?

Понизить версию windows
Доброго времени суток. Установлена Windows 7 Enterprise, хочу понизить версию до professional.

Обновить рабочую лицензионную версию Windows Vista обновить до Windows 7 бесплатно?
Доброго времени суток! Искала-искала, но так четких ответов и не нашла( Подскажите, пож., могу.

Какую версию Windows скачать?
Привет всем. Я решил поставить себе Windwos 7, какую из версий посоветуйте??

Определить версию Windows с условием
Необходимо определить издание Windows (XP, 7, 8, 8.1) и выполнить следуещее условие: Если издание.

Обновить домашнюю версию до Windows 10
подскажите у меня стоит 7 максимальная а ключ есть от домашней хотелось бы его поменять чтобы.

Как узнать реальную версию Windows из режима совместимости

Думаю каждый хотя бы раз сталкивался с ситуацией, когда на современной ОС не удавалось запустить старую программу, и помогал в этом случае режим совместимости Windows.

В основе работы данного механизма лежит перехват различных функций и эмуляция их поведения, свойственного указанной версии Windows, например, эмулируются ключи реестра, каталоги с документами и прочее. Все это нужно для того, чтобы программа думала, что запущена в выбранной среде.

Читайте также:  Oracle 11g download linux

Если приложение запущено в режиме совместимости, то вызов GetVersionEx вернет фиктивную версию Windows, что, вероятно, не подойдет для системных программ типа твикеров ОС. Как быть в этом случае?

Анализ экспортируемых функций

На просторах сети наткнулся на способ детектирования по наличию/отсутствию экспортируемых функций у системных библиотек. Пример кода:

Решение интересное, но не считаю его приемлемым, так как с выходом каждой версии Windows требуется нетривиальная поддержка.

Используя WMI

Windows Management Instrumentation (WMI) в дословном переводе — это инструментарий управления Windows. Если говорить более развернутo, то WMI — это одна из базовых технологий для централизованного управления и слежения за работой различных частей компьютерной инфраструктуры под управлением платформы Windows.

Из WMI можно получить и версию Windows. Из документации следует что это можно сделать таким запросом:

SELECT Version FROM Win32_OperatingSystem

Запустив WMI Explorer в режиме совместимости с Windows XP, можно увидеть, что это значение не эмулируется:

Метод работает, более того, он полностью документирован, но медленный, и требует тянуть в проект кучу кода по работе с WMI.

Ищем в реестре

Пожалуй самый элегантный и правильный способ найденный в сети — это подсмотреть значение в реестре:
HLKM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\CurrentVersion
Ну что же, попробуем:

К сожалению, проверив его на Windows 7 оказалось, что этот ключ реестра эмулируется. Похоже в предыдущих версиях Windows этот способ работал, но, увы — сейчас этот трюк не сработает.

Анализ версии kernel32.dll

Сам не проверял, но говорят, что версия файла у kernel32.dll совпадает с версией Windows. На моем компьютере с Windows 7 это так:

Вполне пригодный способ, но лично мне по непонятным причинам он не нравится, благо есть еще альтернатива.

Анализируем PEB процесса

У каждого Windows-процесса есть структура описывающая его, называется она PEB. Она заполняется при старте процесса и содержит в себе адрес загрузки, список загруженных модулей, параметры командной строки, и, в том числе, версию Windows. Ниже пример модуля, используя который можно получить реальную версию Windows (тестировался на Delphi 2010 Win32):

Скорость работы моментальная, ничего лишнего, единственное НО — недокументированная структура PEB, но как известно Microsoft очень заботится об обратной совместимости, так что с большой долей оптимизма можно считать, что раз описание структуры давно бродит по интернету, то в Microsoft она уже считается документированной.

Оцените статью