Как получить номер версии установленной ОС в C#

Все еще ищете способ просто получить текущую версию ОС (например, Версия ОС: 10.0.14393.0) из приложения C#/UWP iot-core. Указатели? Если я ищу в Интернете, я получаю кучу запутанных хаков.

Номер версии для iot-core очень важен, мы повсюду находим такие заявления: «Эта ветвь поддерживает последнюю доступную версию Windows IoTCore (в настоящее время 1607, номер версии 10.0.14393.x)». И устройства Windows 10 UWP теперь поддерживают автоматические обновления ОС. Итак, как мне получить эту информацию от устройства (iot-core/UWP) во время выполнения?

Примечание: «Environment.OSVersion.Version», по-видимому, недоступен, поэтому это не дубликат для публикации Как узнать номер версии ОС?


person GGleGrand    schedule 14.08.2016    source источник
comment
У меня нет возможности это проверить, но вы можете позвонить в собственная GetVersionEx функция через P/Invoke. Быстрый поиск в Google, чтобы подтвердить, возможно ли это сделать в UWP, привел меня к страница, описывающая, как именно это сделать, хотя и с использованием другой функции в качестве примера.   -  person cynic    schedule 14.08.2016
comment
следуйте этому   -  person tao    schedule 15.08.2016
comment
Спасибо. Это ( stackoverflow.com/a/31895625/1480500 ) и (stackoverflow.com/q/36462824/1480500), кажется, дает желаемый результат, но, учитывая, что это аналитический API, я думаю, Microsoft действительно решила, что нам не нужно знаете это (таким образом, ответ отмечен ниже)!?   -  person GGleGrand    schedule 17.08.2016


Ответы (1)


Согласно вашему описанию, я думаю, что вам действительно нужен класс ApiInformation. Этот класс позволяет определить наличие указанного члена, типа или контракта API, чтобы вы могли безопасно выполнять вызовы API на различных устройствах. Так что нам не нужно получать текущую версию ОС, чтобы посмотреть, поддерживается ли что-то в устройстве. Ключевым моментом здесь является Определение функций, а не ОС или устройств.

Фундаментальная идея адаптивных приложений заключается в том, что ваше приложение проверяет функциональность (или функцию), которая ему нужна, и использует ее только тогда, когда она доступна. Традиционный способ сделать это — проверить версию ОС, а затем использовать этот API. В Windows 10 ваше приложение может во время выполнения проверять, поддерживается ли текущая операционная система классом, методом, свойством, событием или контрактом API. Если это так, приложение может вызвать соответствующий API.

Для получения дополнительной информации см. Динамическое обнаружение функций с контрактами API (10 на 10), а также этот вопрос, Целевой код для определенной версии Windows 10, например сборки 10586.

person Jay Zuo    schedule 15.08.2016
comment
Ближе и, может быть, лучший подход. Однако мне нужна версия ОС для вещей, которые я тестирую на стандартной платформе, а затем обновляю по воздуху на ряд устройств с iot-core. Мне нужно убедиться, что устройства находятся на надлежащем базовом уровне. В противном случае мое приложение должно быть больше приложением AI, чем чем-либо еще :-) - person GGleGrand; 17.08.2016