From 009dc148050bd57a1cd765e5e8158eddd9e41c92 Mon Sep 17 00:00:00 2001 From: Keivan Beigi Date: Tue, 3 Jan 2017 18:56:28 -0800 Subject: [PATCH] Added Windows Server detection logic --- .../EnvironmentInfo/WindowsVersionInfo.cs | 37 ++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) diff --git a/src/NzbDrone.Windows/EnvironmentInfo/WindowsVersionInfo.cs b/src/NzbDrone.Windows/EnvironmentInfo/WindowsVersionInfo.cs index e2dd19cc2..d71c9a7f0 100644 --- a/src/NzbDrone.Windows/EnvironmentInfo/WindowsVersionInfo.cs +++ b/src/NzbDrone.Windows/EnvironmentInfo/WindowsVersionInfo.cs @@ -1,14 +1,49 @@ using System; +using Microsoft.Win32; +using NLog; using NzbDrone.Common.EnvironmentInfo; namespace NzbDrone.Windows.EnvironmentInfo { public class WindowsVersionInfo : IOsVersionAdapter { + private readonly Logger _logger; public bool Enabled => OsInfo.IsWindows; + + public WindowsVersionInfo(Logger logger) + { + _logger = logger; + } + public OsVersionModel Read() { - return new OsVersionModel("Windows", Environment.OSVersion.Version.ToString(), Environment.OSVersion.VersionString); + var windowsServer = IsServer(); + var osName = windowsServer ? "Windows Server" : "Windows"; + return new OsVersionModel(osName, Environment.OSVersion.Version.ToString(), Environment.OSVersion.VersionString); + } + + private bool IsServer() + { + try + { + const string subkey = @"Software\Microsoft\Windows NT\CurrentVersion"; + var openSubKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32).OpenSubKey(subkey); + if (openSubKey != null) + { + var productName = openSubKey.GetValue("ProductName").ToString(); + + if (productName.ToLower().Contains("server")) + { + return true; + } + } + } + catch (Exception e) + { + _logger.Error(e, "Couldn't detect if running Windows Server"); + } + + return false; } } } \ No newline at end of file