You've upgraded to Windows 10 or 11 — or got a new PC — and now your VB6 application is crashing, throwing errors, or simply refusing to open. It's one of the most common calls I get from UK businesses. Here are the most likely causes and what you can do about them.
1. Missing or broken ActiveX components
VB6 applications rely heavily on ActiveX controls — small components that handle things like date pickers, grids, charts, and other interface elements. Many of these were made by third-party companies that no longer exist or no longer support their products.
When Windows is upgraded or a new PC is set up, these controls often don't get transferred correctly, causing errors like:
The fix usually involves locating the original .ocx or .dll files, copying them to the correct Windows folder, and re-registering them using regsvr32. This sounds simple but can be fiddly — particularly if the original installation files are lost.
2. 32-bit vs 64-bit compatibility issues
VB6 applications are 32-bit programs. Windows 10 and 11 are 64-bit operating systems, but they include a compatibility layer (called WOW64) that allows 32-bit applications to run. Most of the time this works fine.
However, problems arise when the VB6 application tries to use a component — such as a database driver or a COM object — that is only available as a 64-bit version. The 32-bit application simply can't use it.
This is particularly common with database connections, which brings us to the next point.
3. Database driver problems
Many VB6 applications connect to databases using older drivers — particularly Microsoft Jet (for Access databases) or older ODBC drivers for SQL Server. These can cause issues on modern Windows for a few reasons:
- The 32-bit version of the driver may not be installed by default
- The connection string in the application may reference a path or server that no longer exists
- Security permissions on the database file may have changed
- Newer versions of SQL Server may not accept connections from legacy drivers
4. File and folder permission changes
Older VB6 applications were often written at a time when Windows was less strict about where programs could read and write files. They might try to write log files, settings, or data directly to the Program Files folder or the Windows directory — areas that modern Windows protects.
The result is usually a crash or silent failure when the application tries to save something. The fix involves either running the application as administrator (a temporary workaround) or updating the application to write to a permitted location such as AppData.
5. DPI and display scaling
Modern monitors — particularly laptops — use high-DPI displays and Windows scales the interface to make text readable. VB6 applications don't understand DPI scaling, which can result in blurry interfaces, buttons that are the wrong size, or text that overflows its container.
This doesn't usually cause crashes but can make the application difficult or impossible to use. There are workarounds involving Windows compatibility settings, and more permanent fixes involve modifying the application itself.
6. Windows security and UAC
User Account Control (UAC) in Windows 10 and 11 is stricter than in older versions of Windows. Some VB6 applications that previously ran fine now trigger UAC prompts or fail silently because they're trying to do something Windows no longer allows without administrator rights.
What to do if your VB6 application is crashing
Before calling a developer, try these steps:
- Right-click the application and choose "Run as administrator" — this resolves many permission-related crashes
- Right-click the .exe, go to Properties → Compatibility, and try running in Windows XP or Windows 7 compatibility mode
- Check the Windows Event Viewer (search for it in the Start menu) — it often shows the specific error that caused the crash
- Check whether the application ran on the previous PC — if not, the problem may predate the Windows upgrade
If none of that resolves it, the issue is likely one of the component or driver problems described above, which usually requires someone with VB6 experience to diagnose and fix properly.
How long does a fix take?
Most VB6 crash fixes take between a few hours and a couple of days depending on the cause. Missing component issues can often be resolved the same day. Database driver problems and permission issues are usually straightforward once diagnosed. Display and DPI issues can take a bit longer if the application needs to be modified.
In almost all cases, the fix is much cheaper than replacing the system entirely — provided you can find someone who still knows VB6.