Есть ли API для получения данных о сборке Win 10?
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 08.05.18 08:09
Оценка:
Как известно, MS обозначает сборки десятки одновременно номером выпуска и четырехкомпонентным номером версии (1607/10.0.14393.2214, 1703/10.0.15063.1058, 1709/10.0.16299.402 и т.п.). GetVersionInfoEx возвращает только первые три компоненты номера версии.

Рекомендаций от MS по получению номера выпуска и четвертой компоненты номера версии навскидку найти не удалось. В обсуждениях советуют брать их из ключа HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion (переменные ReleaseId и UBR).

Есть ли какие-нибудь API, возвращающие эти параметры? Или только через реестр?

И, кстати, как расшифровывается UBR? У MS опять-таки не удалось найти официального мнения, но в winnt.h есть макросы UNIFIEDBUILDREVISION_*. В обсуждениях же аббревиатуру почти поголовно расшифровывают Update Build Release или Update Build Revision, что сильно отдает бессмыслицей.
Отредактировано 08.05.2018 8:14 Евгений Музыченко . Предыдущая версия .
windows api build version версия десятка releaseid ubr
Re: Есть ли API для получения данных о сборке Win 10?
От: Conr Россия  
Дата: 08.05.18 11:47
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>Есть ли какие-нибудь API, возвращающие эти параметры? Или только через реестр?

Тут не подскажу, тоже только через реестр получаю.

ЕМ>И, кстати, как расшифровывается UBR? У MS опять-таки не удалось найти официального мнения, но в winnt.h есть макросы UNIFIEDBUILDREVISION_*. В обсуждениях же аббревиатуру почти поголовно расшифровывают Update Build Release или Update Build Revision, что сильно отдает бессмыслицей.

Вроде как Update Build Revision правильнее. Это по сути номер обновления, например 16299.402 это KB4093105, 16299.371KB4093112 и т.д.

Объяснение отсюда мне кажется вполне логичным:

I'd like to explain that version numbers consist of two to four components: major, minor, build, and revision (UBR). The major and minor components are required; the build and revision components are optional, but the build component is required if the revision component is defined. For revision (UBR), assemblies with the same name, major, and minor version numbers but different revisions are intended to be fully interchangeable. A higher revision number might be used in a build that fixes a security hole in a previously released assembly.

Re: Есть ли API для получения данных о сборке Win 10?
От: Alexander G Украина  
Дата: 08.05.18 14:03
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:


ЕМ>Рекомендаций от MS по получению номера выпуска и четвертой компоненты номера версии навскидку найти не удалось. В обсуждениях советуют брать их из ключа HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion (переменные ReleaseId и UBR).


Они рекомендуют посмотреть у системных DLL-ок
https://msdn.microsoft.com/en-us/library/windows/desktop/ms724429(v=vs.85).aspx

To obtain the full version number for the operating system, call the GetFileVersionInfo function on one of the system DLLs, such as Kernel32.dll, then call VerQueryValue to obtain the \\StringFileInfo\\<lang><codepage>\\ProductVersion subblock of the file version information.


Но что-то не выглядит как план. У меня под рукой нет десятки, но есть крашдамп оттуда, и там у системных DLL первые три компоненты 10.0.14393, но четвёртая компонента различается — krenel32.dll, kernelbase.dll, ntdll.dll — три разных значения.
Русский военный корабль идёт ко дну!
Re[2]: Есть ли API для получения данных о сборке Win 10?
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 08.05.18 14:43
Оценка:
Здравствуйте, Alexander G, Вы писали:

AG>четвёртая компонента различается — krenel32.dll, kernelbase.dll, ntdll.dll — три разных значения.


Неудивительно — они же не меняют всех DLL при каждом апдейте. Так что должен быть или какой-то файл, непременно обновляемый в каждом случае, или только упомянутые реестровые ключи. Основной вопрос в том, есть ли универсальное API для получения этих номеров, или только руками.
Re: Есть ли API для получения данных о сборке Win 10?
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 08.05.18 15:31
Оценка: 5 (1)
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>Есть ли какие-нибудь API, возвращающие эти параметры?


Похоже, их таки нет. Сообразил зарядить в Process Monitor слежение за реестровыми переменными (ReleaseId и UBR) — обнаружил, что в коде cmd.exe есть соответствующий RegQueryValueEx, читающий UBR при каждом запросе версии. Соответственно, при каждом открывании страницы Settings — System — About из кода AboutSettingsHandlers.dll непосредственно вызывается RegGetValue для извлечения и ReleaseId, и UBR.
Re[2]: Есть ли API для получения данных о сборке Win 10?
От: Alexander G Украина  
Дата: 09.05.18 08:45
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:


ЕМ>обнаружил, что в коде cmd.exe


Кстати, нету ли этой информации в выводе "cmd /c ver" ?
Русский военный корабль идёт ко дну!
Re[3]: Есть ли API для получения данных о сборке Win 10?
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 09.05.18 08:51
Оценка:
Здравствуйте, Alexander G, Вы писали:

AG>Кстати, нету ли этой информации в выводе "cmd /c ver" ?


Там только четырехкомпонентный номер версии. Да и вообще, запускать дочерний процесс для получения подобной информации — редкостное извращение.
Re[2]: Есть ли API для получения данных о сборке Win 10?
От: Сергей Мухин Россия  
Дата: 09.05.18 20:10
Оценка:
Здравствуйте, Conr, Вы писали:


ЕМ>>Есть ли какие-нибудь API, возвращающие эти параметры? Или только через реестр?

C>Тут не подскажу, тоже только через реестр получаю.

аналогично.
---
С уважением,
Сергей Мухин
Re[3]: Есть ли API для получения данных о сборке Win 10?
От: Сергей Мухин Россия  
Дата: 10.05.18 12:50
Оценка:
C>>Тут не подскажу, тоже только через реестр получаю.

СМ>аналогично.


только не всегда есть ключ UBR
---
С уважением,
Сергей Мухин
Re[4]: Есть ли API для получения данных о сборке Win 10?
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 10.05.18 13:41
Оценка:
Здравствуйте, Сергей Мухин, Вы писали:

СМ>только не всегда есть ключ UBR


В каких версиях десятки его нет? А до нее он и не обязан быть, хотя у меня в Win7 SP1 какое-то из обновлений его добавило.
Re[5]: Есть ли API для получения данных о сборке Win 10?
От: Сергей Мухин Россия  
Дата: 12.05.18 04:35
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

СМ>>только не всегда есть ключ UBR


ЕМ>В каких версиях десятки его нет? А до нее он и не обязан быть, хотя у меня в Win7 SP1 какое-то из обновлений его добавило.


хз, пользователи слали репорт, подправили и даже не смотрел подробности. Может там и не 10ка была
---
С уважением,
Сергей Мухин
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.