cefsharp/CefSharp · critical · ApplicationException

Current OS version is less than Windows 10. Applications not

Error message

Current OS version is less than Windows 10. Applications not manifested for Windows 10 throw this exception, even if the current operating system version is Windows 10. To manifest your applications for Windows 10, see https://learn.microsoft.com/en-us/windows/win32/sysinfo/targeting-your-application-at-windows-8-1.

What it means

Thrown by CefSharp.Core.Cef.AssertIsWindows10OrGreater() when IsWindows10OrGreater() returns false. CEF/Chromium features in recent CefSharp builds require Windows 10 or later. The check uses the OS-version manifest API, so an app that is not manifested for Windows 10 reports an older version even when it actually runs on Windows 10/11. The exception is therefore as much a manifest problem as an OS problem.

Source

Thrown at CefSharp.Core/Cef.cs:770

        /// Applications not manifested for Windows 10 return false, even if the current operating system version is Windows 10.
        /// To manifest your applications for Windows 10, see https://learn.microsoft.com/en-us/windows/win32/sysinfo/targeting-your-application-at-windows-8-1.
        /// </summary>
        /// <returns>True if the current OS version matches, or is greater than, the Windows 10 version; otherwise, false.</returns>
        public static bool IsWindows10OrGreater()
        {
            return Core.Cef.IsWindows10OrGreaterEx();
        }

        /// <summary>
        /// If the current OS version matches, or is greater than, the Windows 10 version then this method does nothing.
        /// Applications not manifested for Windows 10 will throw an <see cref="ApplicationException"/>, even if the current operating system version is Windows 10.
        /// To manifest your applications for Windows 10, see https://learn.microsoft.com/en-us/windows/win32/sysinfo/targeting-your-application-at-windows-8-1.
        /// </summary>
        /// <exception cref="ApplicationException"></exception>
        public static void AssertIsWindows10OrGreater()
        {
            if (!IsWindows10OrGreater())
                throw new ApplicationException("Current OS version is less than Windows 10. Applications not manifested for Windows 10 throw this exception, even if the current operating system version is Windows 10. To manifest your applications for Windows 10, see https://learn.microsoft.com/en-us/windows/win32/sysinfo/targeting-your-application-at-windows-8-1.");
        }

        /// <summary>
        /// Returns the numeric ID value for an IDC <paramref name="name"/> from cef_command_ids.h or -1
        /// if <paramref name="name"/> is unrecognized by the current CEF/Chromium build.
        /// </summary>
        /// <remarks>
        /// This function wraps the Cef <c>cef_id_for_command_id_name</c> method.
        /// It provides version-safe mapping of command IDC names to version-specific
        /// numeric ID values. Numeric ID values are likely to change across
        /// CEF/Chromium versions but names generally remain the same.
        /// </remarks>
        /// <param name="name">String identifier of the Chromium command.</param>
        /// <returns>version-specific numeric ID value for the command if recognized; otherwise, -1.</returns>
        public static int MapChromeCommandNameToId(string name)
        {
            return Core.Cef.MapChromeCommandNameToId(name);
        }

View on GitHub (pinned to 16bc6e0711)

Solutions

  1. Add an app.manifest to your executable project and include the Windows 10 compatible GUID: <supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" /> (also include the Win8/8.1 GUIDs for completeness).
  2. Set the manifest as the project's default manifest (Project Properties -> Application -> Manifest) so it ships with the build.
  3. If you must support pre-Windows 10 hosts, downgrade to the last CefSharp/CEF branch that still supports that OS (e.g. CefSharp 75/79 era), as the Win10 floor is enforced by Chromium itself.
  4. Verify the fix by calling Cef.IsWindows10OrGreater() before Initialize; it should return true on a real Win10/11 box once manifested.

Example fix

// before (no manifest) -> throws even on Windows 10
Cef.Initialize(settings);

// app.manifest (add to executable project, set as default manifest)
<!-- in compatibility section -->
<application xmlns="urn:schemas-microsoft-com:asm.v3">
  <windowsSettings/>
</application>
<!-- in dependency/os section -->
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
  <application>
    <supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" /> <!-- Windows 10/11 -->
    <supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}" /> <!-- Windows 8.1 -->
  </application>
</compatibility>
Defensive patterns

Strategy: validation

Validate before calling

// Call before Cef.Initialize to decide whether to proceed at all.
if (!CefSharp.Cef.IsWindows10OrGreater())
{
    // Either warn the user or fall back to a legacy CefSharp build.
    MessageBox.Show("This application requires Windows 10 or later.");
    return;
}

Type guard

// Indicates whether AssertIsWindows10OrGreater will pass without throwing.
public static bool CanAssertWindows10OrGreater() => CefSharp.Cef.IsWindows10OrGreater();

Try / catch

try { CefSharp.Cef.AssertIsWindows10OrGreater(); }
catch (ApplicationException ex)
{
    // Log and surface a user-facing message about manifest / OS requirements.
    logger.Error(ex, "Windows 10 requirement not met (check app manifest).");
}

Prevention

When it happens

Trigger: Calling Cef.Initialize on, or any code path that reaches Cef.AssertIsWindows10OrGreater() on, a host that is genuinely pre-Windows 10, or an executable whose manifest lacks the Windows 10 supportedOS GUID {8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}. On a correctly manifested Win10/11 box this never fires.

Common situations: New CefSharp project run from Visual Studio without an app.manifest (the default VS manifest targets Win8.1); deploying to a Windows Server 2012 R2 / Windows 7 / Server 2008 R2 machine; CI test runner whose host image is older than Win10; upgrading CefSharp to a build that now enforces the Win10 floor.

Related errors


AI-assisted analysis of cefsharp/CefSharp@16bc6e0711 (2026-08-13). Data as JSON: /api/errors/87330aff19becf23. Report an issue: GitHub.