c# operating-system windows-8 microsoft-metro windows-runtime

Obtenga la versión OS en WinRT Metro App C#



operating-system windows-8 (4)

Basado en las respuestas de otros carteles, no hay una API para probar la versión del sistema operativo, pero habrá API para consultar la versión de un tipo específico. Esto significa que es posible que no pueda indicar la versión de las futuras versiones de Windows con su código actual, pero si sigue actualizando su código, podría determinar la versión del sistema operativo en función de si hay un tipo específico disponible. Por ahora, asumiría que está utilizando la versión actual de Windows 8.

Además, no lo he intentado, pero es posible que puedas obtenerlo haciendo interoperabilidad con JavaScript y analizando "navigator.appVersion".

Estoy programando una aplicación estilo Metro con C # y Visual Studio 11 Beta. Ahora quiero obtener la versión del sistema operativo del sistema operativo. ¿Cómo puedo conseguir esto?

Descubrí cómo hacerlo en aplicaciones "normales". Ahí tomas la clase de entorno con el atributo OSVersion pero en .NET Core no existe este atributo


De hecho, hay una solución simple para obtener una cadena de versión de Windows en su formulario de agente de usuario (Windows NT 6.x).

A las personas que se preguntan por qué queremos hacerlo: para recopilar estadísticas sobre la versión de Windows de nuestros usuarios y tomar decisiones conscientes sobre la compatibilidad con versiones anteriores.

public class OsVersion { public static Task<string> GetAsync() { var t = new TaskCompletionSource<string>(); var w = new WebView(); w.AllowedScriptNotifyUris = WebView.AnyScriptNotifyUri; w.NavigateToString("<html />"); NotifyEventHandler h = null; h = (s, e) => { try { var match = Regex.Match(e.Value, @"Windows/s+NT/s+/d+(/./d+)?"); if (match.Success) t.SetResult(match.Value); else t.SetResult("Unknowm"); } catch (Exception ex) { t.SetException(ex); } finally { /* release */ w.ScriptNotify -= h; } }; w.ScriptNotify += h; w.InvokeScript("execScript", new[] { "window.external.notify(navigator.appVersion); " }); return t.Task; }


Para aplicaciones nuevas, debe verificar las características específicas, no la versión del sistema operativo.

Por lo que sé, no hay ninguna razón para verificar la versión del SO, ya que las aplicaciones de metro solo están disponibles para Windows 8.

Edición: las aplicaciones de la tienda están disponibles en varias versiones de Windows ahora, pero aún se recomienda probar las características en lugar de las versiones del sistema operativo. La versión mínima del sistema operativo se establece como objetivo de compilación para un proyecto cuando lo creas.

Edición n. ° 2: Si está interesado en rastrear las versiones del sistema operativo en la base de instalación de su aplicación, puede integrar Application Insights en su proyecto comenzando con las aplicaciones dirigidas a Windows 8.1. Aquí hay una guía sobre cómo empezar con esto:

http://azure.microsoft.com/en-us/documentation/articles/app-insights-windows-get-started/


Puede obtener el número de versión del sistema operativo con cierto riesgo de que no sea correcto utilizando la API de dispositivos para obtener los números de versión del controlador para componentes de sistema de bajo nivel.

La respuesta aceptada es correcta, ya que no debe vincular la funcionalidad con el número de versión, pero existen razones válidas para usarla, como los análisis. Es útil saber cuándo muchos de sus usuarios ya están en una nueva versión y que debería estarlo. Teniendo en cuenta una actualización de la aplicación para aprovecharla.

https://github.com/AttackPattern/CSharpAnalytics/blob/master/Source/CSharpAnalytics/SystemInfo/WindowsStoreSystemInfo.cs tiene más información y código de muestra (revelación, escribí ese código)

Nota: El código se ha actualizado y ahora maneja HAL personalizados / múltiples, etc.