Я много лет назад написал инструмент аудита ПК и постоянно его обновляю. Одной из основных функций является сообщение о версии Windows, выполняемой на проверяемом ПК, для которого я всегда использовал вызов GetVersionEx.
Это работает до Windows 8, включая Windows 8, но не поддерживается в Windows 10, и действительно, Windows 10 возвращает 8.2, как это делает Windows 8. Microsoft, похоже, не представила ничего в качестве прямой замены, предлагая вместо этого, что вы проверяете определенные функции, а не смотрите на ОС, но для целей аудита я действительно хочу имя ОС.
"Сканер" - это программа на С++, которая должна запускаться под не-привилегированными учетными записями, поэтому я не думаю, что другое предложение, которое я прочитал, - поиск версии системной DLL, такой как kernel32.dll, будет работать, поскольку эти папки обычно недоступным для пользователей.
Любые другие предложения/мысли приветствуются!