static void Main(string[] args)
        {
            // Calling RtlGetVersion in ntdll.dll
            // The Windows Kernel offers an interesting function. The RtlGetVersion routine returns version information about the
            // currently running operating system. It is available starting with Windows 2000 and also works on
            // Windows 10 / Server 2019 / Server 2016 right away.

            Console.WriteLine($"Windows version: " +
                              $"{OSVersion.GetOSVersion().Version.Major}." +
                              $"{OSVersion.GetOSVersion().Version.Minor}." +
                              $"{OSVersion.GetOSVersion().Version.Build}" +
                              $"");

            Console.WriteLine($"OS type: {OSVersion.GetOperatingSystem()}");
            Console.WriteLine($"is workstation: {OSVersion.IsWorkstation}");
            Console.WriteLine($"is server: {OSVersion.IsServer}");
            Console.WriteLine($"64-Bit OS: {OSVersion.Is64BitOperatingSystem}");

            if (OSVersion.GetOSVersion().Version.Major >= 10)
            {
                Console.WriteLine($"Windows Release ID: {OSVersion.MajorVersion10Properties().ReleaseId ?? "(Unable to detect)"}");
                Console.WriteLine($"Windows Display Version: {OSVersion.MajorVersion10Properties().DisplayVersion ?? "(Unable to detect)"}");
                Console.WriteLine($"Windows Update Build Revision: {OSVersion.MajorVersion10Properties().UBR ?? "(Unable to detect)"}");
            }

            Console.ReadKey();
        }
Esempio n. 2
0
        public void UnknownWindowsWhenVersionHasZeroValues(int majorVersion, int minorVersion)
        {
            // arrange
            var osVersionInfoMock = new OSVERSIONINFOEX {
                OSVersionInfoSize = Marshal.SizeOf(typeof(OSVERSIONINFOEX))
            };

            osVersionInfoMock.MajorVersion = majorVersion;
            osVersionInfoMock.MinorVersion = minorVersion;

            Win32ApiProviderMock win32ApiProviderMock = new Win32ApiProviderMock(osVersionInfoMock);

            OSVersion.SetWin32ApiProvider(win32ApiProviderMock);

            // act
            OSVersionExtension.OperatingSystem operatingSystem = OSVersion.GetOperatingSystem();

            // assert
            Assert.AreEqual(OSVersionExtension.OperatingSystem.Unknown, operatingSystem);
        }
Esempio n. 3
0
        public void DetectWindows81(int majorVersion, int minorVersion, ProductType productType)
        {
            // arrange
            var osVersionInfoMock = new OSVERSIONINFOEX {
                OSVersionInfoSize = Marshal.SizeOf(typeof(OSVERSIONINFOEX))
            };

            osVersionInfoMock.MajorVersion = majorVersion;
            osVersionInfoMock.MinorVersion = minorVersion;
            osVersionInfoMock.ProductType  = productType;

            Win32ApiProviderMock win32ApiProviderMock = new Win32ApiProviderMock(osVersionInfoMock);

            OSVersion.SetWin32ApiProvider(win32ApiProviderMock);

            // act
            OSVersionExtension.OperatingSystem operatingSystem = OSVersion.GetOperatingSystem();

            // assert
            Assert.AreEqual(OSVersionExtension.OperatingSystem.Windows81, operatingSystem);
        }
Esempio n. 4
0
        public void DetectWindowsHomeServer(int majorVersion, int minorVersion, SuiteMask suiteMask)
        {
            // arrange
            var osVersionInfoMock = new OSVERSIONINFOEX {
                OSVersionInfoSize = Marshal.SizeOf(typeof(OSVERSIONINFOEX))
            };

            osVersionInfoMock.MajorVersion = majorVersion;
            osVersionInfoMock.MinorVersion = minorVersion;
            osVersionInfoMock.SuiteMask    = suiteMask;


            Win32ApiProviderMock win32ApiProviderMock = new Win32ApiProviderMock(osVersionInfoMock);

            OSVersion.SetWin32ApiProvider(win32ApiProviderMock);

            // act
            OSVersionExtension.OperatingSystem operatingSystem = OSVersion.GetOperatingSystem();

            // assert
            Assert.AreEqual(OSVersionExtension.OperatingSystem.WindowsHomeServer, operatingSystem);
        }
Esempio n. 5
0
        public void DetectWindowsServer2003(int majorVersion, int minorVersion, ProductType productType)
        {
            // arrange
            var osVersionInfoMock = new OSVERSIONINFOEX {
                OSVersionInfoSize = Marshal.SizeOf(typeof(OSVERSIONINFOEX))
            };

            osVersionInfoMock.MajorVersion = majorVersion;
            osVersionInfoMock.MinorVersion = minorVersion;
            osVersionInfoMock.ProductType  = productType;
            List <KeyValuePair <SystemMetric, int> > systemMetrics = WindowsServer2003Rules.SYSTEMMETRICS;


            Win32ApiProviderMock win32ApiProviderMock = new Win32ApiProviderMock(osVersionInfoMock, systemMetrics);

            OSVersion.SetWin32ApiProvider(win32ApiProviderMock);

            // act
            OSVersionExtension.OperatingSystem operatingSystem = OSVersion.GetOperatingSystem();

            // assert
            Assert.AreEqual(OSVersionExtension.OperatingSystem.WindowsServer2003, operatingSystem);
        }