Question: I am currently working on a C# project. I want to collect users statistics to better develop the software. I am using the `Environment.OS` feature of C# but its only showing the OS name as something like **Microsoft Windows NT**

What I want to be able to **retrieve** is the *actual known name of the OS* like whether it is `Windows XP, Windows Vista or Windows 7` and etc. 

Is this possible?

Answer: 
Though this is not a fully C# way of detecting the OS Name, below code works for my needs-

```
public static string GetFriendlyOSName()
    {
        System.Diagnostics.Process cmd = new System.Diagnostics.Process();
        cmd.StartInfo.FileName = "cmd.exe";
        cmd.StartInfo.Arguments = "/C systeminfo | findstr /c:\"OS Name\"";
        cmd.StartInfo.RedirectStandardOutput = true;
        cmd.StartInfo.UseShellExecute = false;
        cmd.StartInfo.CreateNoWindow = true;
        cmd.Start();
        cmd.WaitForExit();
        string output = cmd.StandardOutput.ReadToEnd();
        cmd.Close();
        return output.Split(new[] { ':' }, 2)[1].Trim();
    }

```

Note:

1. This code works for only Windows OS.
2. The code is tested only on Windows 10, 11.
```
string text = (string)Registry.LocalMachine.OpenSubKey("SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion").GetValue("ProductName");

```

this code will get the full os name like this "Windows 8.1 Pro"