private static unsafe bool GetIsWindows1809() { // Resort to ntdll. OsGetVersionEx and hence Environment.OSVersion.Version (till .NET Core 3.1) // will always return Windows 8.1 if the app is not manifested to support newer versions. // https://docs.microsoft.com/en-us/windows/win32/api/sysinfoapi/nf-sysinfoapi-getversionexw // https://github.com/dotnet/runtime/pull/33651 var osvi = default(NtDll.RTL_OSVERSIONINFOW); osvi.dwOSVersionInfoSize = (uint)sizeof(NtDll.RTL_OSVERSIONINFOW); int ntstatus = NtDll.RtlGetVersion(ref osvi); if (ntstatus < 0) { throw new AsmichiChildProcessInternalLogicErrorException(Invariant($"RtlGetVersion failed (0x{ntstatus:X}).")); } return(osvi.dwPlatformId == 2 && osvi.dwMajorVersion == 10 && osvi.dwMinorVersion == 0 && osvi.dwBuildNumber == 17763); }