Необходимо определить наличие версии/апдейта 2004 для Windows 10. В идеале при помощи WinAPI. Заранее спасибо за советы.
GetFileVersionInfoSize, GetFileVersionInfo, VerQueryValue. Апдейт заменяет ряд исполняемых файлов, их версия (в ресурсах) меняется. Вручную ее можно посмотреть пкм-свойства-подробно, а программно - перечисленными апями. А Win32_InstalledWin32Program насколько я помню при установке апдейта он просто в списке установленных программ светится (вряд ли проканает с готовым дистрибутивом этой версии).
ormoulu, еще можно парсить нтдлл экспорт и смотреть по сисколам, в 2004 добавили какие-то https://j00ru.vexillium.org/syscalls/nt/64/
Как-то все это чересчур хаково. Хочется какой-нибудь стандартный/официальный вариант. Как например winver определяет версию винды?
Не совсем понимаю, здесь нет этого (билднамбер - это не то, что тебе нужно): https://docs.microsoft.com/en-us/windows-hardware/drivers/ddi/wdm/ns-wdm-_osversioninfoexw
ormoulu, Всё верно сказали, можешь прочитать версию из памяти, есть она в usd/teb/peb но это плохой метод, хотя смещения не менялись и не изменятся в этих структурах. Следует использовать паблик апи, а не читать значение из каких то интернал структур, если не малварь/крипторы/протекторы и тп.
Разве майкрософт предоставляет документированый вариант получения инфы? Вот как вы хотите, без структур и прочей магии. Они же убрали даже GetVersion(Ex), правда оставив пока Rtl-версию апи; так то , наверное, максимум можно получить номер сборки (хз как), вот этот который 18362 , и его преобразовывать в 1903 по каким-то внутренним таблицам.