Feedback

OS Version & Name mit WMI

Sprache: C#

Man kann natürlich den Namen der Windows Version anhand verschiedener Teile von .NET und des Systems ermitteln. Einfacher dürfte es jedoch über die WMI sein. Das hat noch einen schönen Nebeneffekt – die Werte sind immer aktuell, auch ohne Codeanpassung. D.h., dass selbst die Win10 TP schon die korrekten Werte ausgibt. [b]Zusätzlich benötigte Verweise[/b] System.Management.dll [b]Benötigte Namespaces[/b] System System.Management System.Linq
/// <summary>
/// Stellt Informationen über das Betriebssystem Bereit.
/// </summary>
public static class OSVersion
{
    /// <summary>
    /// Initialisiert die Werte der Eigenschaften.
    /// </summary>
    static void init()
    {
        using (var mos = new ManagementObjectSearcher("SELECT Caption, Version FROM Win32_OperatingSystem"))
        {
            var attribs = mos.Get().OfType<ManagementObject>();
            caption = attribs.FirstOrDefault().GetPropertyValue("Caption").ToString() ?? "Unknown";
            version = new Version((attribs.FirstOrDefault().GetPropertyValue("Version") ?? "0.0.0.0").ToString());
        }
    }

    static string caption = null;
    static Version version = null;

    /// <summary>
    /// Ruft den Namen des Betriebssystems ab.
    /// </summary>
    public static string Caption
    {
        get
        {
            if (caption == null)
                init();
            return caption;
        }
    }
    /// <summary>
    /// Ruft die Versionsnummer des Betriebssystems ab.
    /// </summary>
    public static Version Version
    {
        get
        {
            if (version == null)
                init();
            return version;
        }
    }
}
/// <summary>
/// Stellt Informationen über das Betriebssystem Bereit.
/// </summary>
public static class OSVersion
{
    /// <summary>
    /// Initialisiert die Werte der Eigenschaften.
    /// </summary>
    static void init()
    {
        using (var mos = new ManagementObjectSearcher("SELECT Caption, Version FROM Win32_OperatingSystem"))
        {
            var attribs = mos.Get().OfType<ManagementObject>();
            caption = attribs.FirstOrDefault().GetPropertyValue("Caption").ToString() ?? "Unknown";
            version = new Version((attribs.FirstOrDefault().GetPropertyValue("Version") ?? "0.0.0.0").ToString());
        }
    }

    static string caption = null;
    static Version version = null;

    /// <summary>
    /// Ruft den Namen des Betriebssystems ab.
    /// </summary>
    public static string Caption
    {
        get
        {
            if (caption == null)
                init();
            return caption;
        }
    }
    /// <summary>
    /// Ruft die Versionsnummer des Betriebssystems ab.
    /// </summary>
    public static Version Version
    {
        get
        {
            if (version == null)
                init();
            return version;
        }
    }
}