What Microsoft actually supports.
Microsoft’s Support Statement for Visual Basic 6.0 separates three deliverables: the IDE, the runtime, and the runtime extended files. The runtime is the set of compiled binaries on the original VB6 redistribution list, headed by msvbvm60.dll and oleaut32.dll. They ship inside Windows 11 and Windows Server 2022 and 2025, supported for the lifetime of each Windows version, with a narrow bar: serious regressions and critical security issues for existing applications, nothing more.
The extended files, such as mscomctl.ocx, comdlg32.ocx, and mswinsck.ocx, are supported on Windows 11 but not shipped in it; the application must redistribute them. A third group is unsupported: dao350.dll and msjet35.dll, for which Microsoft points at later supported versions, and threed32.ocx, which has no successor.
The IDE has not been supported since April 8, 2008 and was never supported on 64-bit Windows. Windows 11 has no 32-bit edition, so every VB6 application on it runs under WOW64, the only environment in which Microsoft supports it on 64-bit Windows. Third-party OCX and ActiveX controls sit explicitly outside the statement.
What breaks in practice.
None of these is a runtime defect; each is a 1998-era dependency meeting an operating system that changed underneath it.
- Third-party OCX and ActiveX controls
- Registration needs elevation under UAC and the 32-bit regsvr32 in SysWOW64, with entries under Wow6432Node; a control registered per-user or by a failed installer gives run-time error 429 or 372.
- 32-bit meets 64-bit Office, ODBC, and MAPI
- In-process COM needs matching bitness, so a VB6 application cannot load a 64-bit Access Database Engine, ODBC driver, or the MAPI that 64-bit Outlook installs; Microsoft documents that a 32-bit application cannot load the 64-bit msmapi32.dll.
- DPI scaling and blurry forms
- VB6 forms are DPI unaware, so Windows renders them at 96 DPI and bitmap-stretches the result on any display scaled above 100%: soft text and overlapping controls.
- Printing and reports
- The Printer object, the Crystal Reports OCX, and the Data Report designer assume a local printer whose driver answers their calls; current drivers and print-to-PDF must be verified per printer for page size, margins, and output.
- DAO, Jet, and Access files
- Jet 4.0 and DAO 3.6 still ship in Windows as 32-bit components in functional deprecation; no 64-bit Jet exists. The Access Database Engine that replaced it comes in two bitnesses; Office blocks the one that does not match its own.
- SmartScreen and unsigned installers
- Package and Deployment Wizard setups are unsigned, so Defender SmartScreen shows “Windows protected your PC”. Installers with a 16-bit stub do not run at all; 64-bit Windows has no NTVDM.
- Fixed paths and registry locations
- Writing under Program Files or HKEY_LOCAL_MACHINE was normal before UAC. Windows 11 denies or silently redirects those writes into VirtualStore in the user’s profile, so two users see different settings.
Workarounds that buy time.
Each is legitimate, documented, and temporary: it keeps the application running while the real decision is made; it does not make it a Windows 11 application.
- Compatibility settings
- Run as administrator on the Compatibility tab fixes registry and Program Files writes, at the cost of a UAC prompt on every launch.
- Manifests and DPI awareness
- An external .exe.manifest can declare DPI awareness, request Common Controls 6, and set requestedExecutionLevel so UAC virtualization stops deliberately. DPI awareness only helps if the layout code copes; otherwise the System (Enhanced) override sharpens GDI text.
- The 32-bit ODBC Administrator
- A 32-bit application only sees DSNs created in the odbcad32.exe under SysWOW64, not in Control Panel. SQLOLEDB is no longer maintained and not recommended for new development, and the Windows-shipped SQL Server ODBC driver should be checked for your version; Microsoft’s current OLE DB and ODBC drivers have 32-bit builds.
- Registration-free COM
- A manifest listing the OCX and DLL files beside the executable lets Windows activate them without registration, removing the elevation, Wow6432Node, and per-user problems in one step. It needs the exact files the application was compiled against.
- Virtualization
- A virtual machine or hosted desktop with the full 32-bit stack installed once and imaged keeps the fragile parts in one place, reproduced by copying a file. It suits a short remaining life; licensing and support questions move there, not away.
When a workaround is the wrong answer.
A workaround is right when the application is stable, the business is not asking it to change, and someone can name its switch-off date. Our guide on when not to modernize sets out that test; an application that passes should be left alone, manifest and all.
It becomes the wrong answer when workarounds compound: an elevated shortcut, a 32-bit DSN, a registration-free manifest, and a Windows 10 virtual machine under Extended Security Updates, none of which is reproducible unless it is written down. The application is then running on a private copy of an older Windows, hosted on Windows 11.
The other trigger is a change request. New features need the IDE, unsupported since 2008 and never supported on 64-bit Windows, the only kind Windows 11 comes in. The choice then is automated conversion or rewrite; our guide on that comparison covers where each leaves you.
What modernization looks like.
Modernizing a VB6 application is rarely a like-for-like port. The business rules in the modules and event handlers are the asset; the forms, ActiveX controls, and Jet database are liabilities, and the plan treats them differently.
The rules are extracted into a service layer with tests that prove parity against the original. The user interface is rebuilt as a native 64-bit desktop client or a browser front end. The data moves from Jet or Access to SQL Server or PostgreSQL with history preserved. Targets are C# .NET, Go, or Rust, and the sequencing is usually strangler fig: one capability at a time behind a stable interface, with VB6 running until the last piece moves.
Converters have a place for the mechanical translation and a limit at architecture; our Visual Basic migration page describes the service.
What the assessment inventories.
The Legacy Software Assessment reads the VB6 project and records what it depends on before anyone recommends anything. It ends in findings with evidence and a written recommendation: keep and document, bridge, or migrate. The fee is quoted after the free 1-hour consultation and creditable toward a subsequent modernization project. It covers:
- Component references
- Every OCX, DLL, and type library in the .vbp files: vendor, version, source or 64-bit build available, and how each is registered.
- Declare statements
- Win32 declarations, pointer-size assumptions in Long parameters, and calls into DLLs that exist only in 32-bit.
- Data access
- DAO, RDO, or ADO; Jet, ODBC, or OLE DB; providers named in code and DSNs; SQL embedded in string constants.
- Deployment shape
- How it installs, which paths and registry keys it writes at run time, whether the installer is signed, what runs elevated.
- Office and MAPI integration
- In-process versus out-of-process automation, Office bitness in the field, and any MAPI or Outlook use.
Symptom, usual cause, fix or workaround.
| Symptom | Usual cause | Fix or workaround |
|---|---|---|
| Run-time error 429, 372, or 339 | OCX or DLL not registered for this user or bitness | Elevated SysWOW64 regsvr32, or a registration-free manifest |
| Blurry text, overlapping controls | DPI-unaware form stretched above 100% scale | System (Enhanced) override; DPI-aware manifest only if the layout copes |
| DSN not found, though it exists | Created in the 64-bit ODBC Administrator | Recreate it in the SysWOW64 odbcad32.exe |
| Provider cannot be found for an Access file | 32-bit Jet or ACE provider missing or blocked by Office | Matching 32-bit Access Database Engine; plan the move off Jet |
| One user’s settings invisible to another | UAC redirected Program Files or HKLM writes into VirtualStore | Store settings in the user profile; set requestedExecutionLevel |
| MAPI calls fail after an Office upgrade | 64-bit Outlook installed a MAPI a 32-bit process cannot load | 32-bit Office where allowed, out-of-process automation, or SMTP |
Common questions
Does Microsoft support VB6 applications on Windows 11?
Yes, for the runtime. Microsoft’s support statement lists Windows 11 as supported for the runtime files in the OS and the runtime extended files, limited to serious regressions and critical security issues. The IDE has not been supported since 2008.
Will msvbvm60.dll be removed from Windows 11?
Not while Windows 11 is supported. msvbvm60.dll is on Microsoft’s list of runtime files shipping in the OS, covered for the support lifetime of each Windows version. Microsoft updates the statement per Windows release; check it for any later release.
Why does my VB6 application run on Windows 10 but not on Windows 11?
Usually because the machine changed, not the OS. A new Windows 11 machine typically has 64-bit Office, no third-party OCX files registered, no 32-bit DSNs, and a display scaled above 100%. Compare those four on both machines before blaming Windows 11.
Can I run VB6 as 64-bit on Windows 11?
No. The runtime is 32-bit only and Microsoft supports it only under WOW64; there is no 64-bit VB6 compiler. A VB6 application can call 64-bit components out of process, but anything it loads in process must be 32-bit.
Do I need to install the VB6 runtime on Windows 11?
The core runtime files, including msvbvm60.dll, are already in Windows 11. The extended files, the OCX controls that came with the IDE, are not; your installer still has to ship and register them, and third-party controls come from their vendor.
How long can a workaround keep a VB6 application going?
As long as Windows 11 is supported, provided every workaround is written down and reproducible on a fresh machine. The limit is not the runtime but the first change request that needs the IDE, or the first component whose vendor is gone.
Not sure where to start?
Start with a fixed-scope Legacy Software Assessment: a read-only review of your application’s source, database, configuration, logs, and architecture, ending in findings with evidence and a written recommendation. Quoted after the free 1-hour consultation; creditable toward a subsequent modernization project.