Notes · Windows

A Side-by-Side Error Names Its Own Fix

Windows tells you that a program's side-by-side configuration is incorrect and then stops talking. The advice you find online — “install the Visual C++ redistributable” — is a coin flip across roughly a dozen packages. But the error has already written down its own answer, in a place nobody looks.

The dead program

I have a Logitech K810 keyboard, which insists on Fn before F1F12. Logitech SetPoint can invert that, so I reinstalled it. Double-clicking the executable did nothing at all — no window, no error. Running it as administrator finally produced a message:

The application has failed to start because its side-by-side configuration is incorrect. Please see the application event log or use the command-line sxstrace.exe tool for more detail.

Which names no file, no version, and no package. Search the web and you'll be told to install “the Visual C++ redistributable.” There are about a dozen of those — 2005, 2008, 2010, 2012, 2013, 2015–2022 — each in x86 and x64. Install the wrong one and absolutely nothing changes, which is what makes this error feel unfixable.

The event log has the answer

The message says see the application event log, and unusually, that is not boilerplate. Windows records the precise dependency it could not resolve.

  1. Press Win+R, type eventvwr.msc, press Enter.
  2. Go to Windows Logs → Application.
  3. Find the most recent error whose Source is SideBySide.

Mine read:

Activation context generation failed for
"C:\Program Files\Logitech\SetPointP\SetPoint.exe".
Dependent Assembly Microsoft.VC90.MFC,
  processorArchitecture="amd64",
  publicKeyToken="1fc8b3b9a1e18e3b",
  type="win32",
  version="9.0.21022.8"
could not be found.

Reading it

That one line specifies the download completely, once you know the vocabulary:

  • VC90 — the Visual C++ compiler version, not the year on the box. 90 is Visual C++ 2008. (VC80 is 2005, VC100 is 2010.)
  • MFC — the MFC library specifically, not just the C runtime. The full redistributable carries it; trimmed-down CRT-only packages don't.
  • amd64 — the 64-bit build. This is the one people get wrong: old-looking software feels like it should be 32-bit, and SetPoint installs into a folder that suggests as much, but the log settles it.
  • 9.0.21022.8 — the original 2008 release. Service Pack 1 is 9.0.30729.x.

The fix

Microsoft Visual C++ 2008 SP1 Redistributable, x64. SetPoint launched on the next try.

The version numbers not matching is fine, and worth understanding, because it looks like a mistake. The log asked for 9.0.21022.8; SP1 installs 9.0.30729.x. The SP1 package also installs a publisher policy — a small manifest whose entire job is to redirect requests for older 9.0 builds to the one actually present. So you install the newest 2008 runtime and every 2008-era program is satisfied, whichever exact build it was compiled against.

Two things worth knowing. Having “the latest” VC++ 2015–2022 redistributable installed is no reason to skip this — those ship modern side-by-side DLLs and never satisfy a VC90 request; the generations coexist rather than supersede one another. And in the rare case SP1 doesn't take, the 2008 RTM redistributable supplies 9.0.21022.8 exactly, bypassing the policy question entirely.

The general shape

A side-by-side failure is not a mystery, it's a lookup. The dialog is deliberately vague because the loader that failed has no user interface — but it logged the assembly name, architecture, and version before dying. Two minutes in Event Viewer converts an unfixable-feeling error into a single unambiguous download, and skips the reinstall-things-at-random phase completely.

Written August 2026. · More notes · Home