Esempio n. 1
0
        static osVersion()
        {
            Api.RTL_OSVERSIONINFOW x = default; x.dwOSVersionInfoSize = Api.SizeOf(x);
            if (0 == Api.RtlGetVersion(ref x))
            {
                _winver   = Math2.MakeWord(x.dwMinorVersion, x.dwMajorVersion);
                _winbuild = (int)x.dwBuildNumber;
                //use this because Environment.OSVersion.Version (GetVersionEx) lies, even if we have correct manifest when is debugger present
            }
            else
            {
                Debug.Fail("RtlGetVersion");
                var v = Environment.OSVersion.Version;
                _winver   = Math2.MakeWord(v.Minor, v.Major);
                _winbuild = v.Build;
            }

            _minWin8   = _winver >= win8;
            _minWin8_1 = _winver >= win8_1;
            _minWin10  = _winver >= win10;
            if (_minWin10)
            {
                _win10build = _winbuild;
            }
            //print.it(_win10build);

            //this is to remind to add new members for new Windows 10/11 versions
            //Debug_.PrintIf(_win10build > 19044, $"{_win10build} {Microsoft.Win32.Registry.GetValue(@"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion", "DisplayVersion", "failed")}");

            _is32BitOS = sizeof(nint) == 4 && !(Api.IsWow64Process(Api.GetCurrentProcess(), out _isWow64) && _isWow64);
        }
Esempio n. 2
0
        static AVersion()
        {
            Api.RTL_OSVERSIONINFOW x = default; x.dwOSVersionInfoSize = Api.SizeOf(x);
            if (0 == Api.RtlGetVersion(ref x))
            {
                _winver = AMath.MakeUshort(x.dwMinorVersion, x.dwMajorVersion);
                //use this because Environment.OSVersion.Version (GetVersionEx) lies, even if we have correct manifest when is debugger present
            }
            else
            {
                Debug.Fail("RtlGetVersion");
                var v = Environment.OSVersion.Version;
                _winver = AMath.MakeUshort(v.Minor, v.Major);
            }

            _minWin8   = _winver >= Win8;
            _minWin8_1 = _winver >= Win8_1;
            _minWin10  = _winver >= Win10;

            _is32BitOS = sizeof(IntPtr) == 4 && !(Api.IsWow64Process(Api.GetCurrentProcess(), out _isWow64) && _isWow64);
        }