Many companies fear that upgrading to Windows 10 or 11 will kill their old Visual Basic 6 applications. In most cases, that fear is unfounded: Microsoft keeps shipping the VB6 runtime with Windows. But there are nuances worth knowing.

What still works

The core of the Visual Basic 6 runtime (MSVBVM60.dll) ships with Windows 10 and 11. A "standard" VB6 application that only uses base components therefore usually starts with no special handling. Microsoft has committed to supporting the runtime for the lifetime of Windows.

What can break

  • Third-party ActiveX / OCX controls: these, not VB6 itself, most often cause problems. They must be present and correctly registered (regsvr32);
  • 64-bit architectures: VB6 applications are 32-bit, which remains supported, but some legacy 16-bit components or drivers are not;
  • Paths and permissions: writing to Program Files or the registry, once tolerated, is now restricted by UAC;
  • Old database dependencies (obsolete ODBC/OLEDB drivers) sometimes absent from recent systems.

When an application refuses to start

Most often, the error points to a missing or unregistered component. Pinpointing the exact faulty dependency in an executable whose source you don't have can be tricky. This is a case where binary analysis helps: VBReFormer lists the COM, OLE and ActiveX components referenced by the application, letting you immediately spot which dependency to install or re-register. The free edition is enough for this inspection.

What about the long term?

Running VB6 on Windows 11 is one thing; maintaining it over time is another. If you've lost the source code, this is the right moment to recover it, or even to consider a migration to .NET. But there's no rush: as long as Windows ships the runtime, your application keeps running.