예제 #1
0
        /// <summary>
        /// Gets the friendly name, as shown in Windows' control panel.
        /// </summary>
        /// <returns>System.String.</returns>
        private string GetFriendlyName()
        {
            var lpVersionInformation = new NtDll.OSVERSIONINFOEX();

            lpVersionInformation.dwOSVersionInfoSize = (uint)Marshal.SizeOf(lpVersionInformation);
            NtDll.RtlGetVersion(ref lpVersionInformation);

            return(ConvertAdapterName(NameBytes, 0, lpVersionInformation.dwPlatformId, lpVersionInformation.dwMajorVersion));
        }
예제 #2
0
        /// <summary>
        /// Gets the version.
        /// </summary>
        /// <returns><see cref="NtDll.OSVERSIONINFOEX" />.</returns>
        private static NtDll.OSVERSIONINFOEX GetVersion()
        {
            var osversioninfoex = new NtDll.OSVERSIONINFOEX();

            osversioninfoex.dwOSVersionInfoSize = (uint)Marshal.SizeOf(osversioninfoex);
            NtDll.RtlGetVersion(ref osversioninfoex);

            return(osversioninfoex);
        }
예제 #3
0
        private static bool IsWindows10OrHigher()
        {
            var version = NtDll.RtlGetVersion();

            if (default(Version) == version)
            {
                // Snippet from Koopakiller https://dotnet-snippets.de/snippet/os-version-name-mit-wmi/4929
                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());
                }
            }
            return(version >= new Version(10, 0));
        }