devcrea

How to Fix the MSCOMCTL.OCX Error on Windows 10 and 11

Learn how to fix the MSCOMCTL.OCX missing or not registered error on Windows 10 and 11. Step-by-step solutions including manual registration and VB6 download.

// The short answer

MSCOMCTL.OCX errors occur when a legacy 32-bit application cannot find or register the VB6 ActiveX control. On 64-bit Windows, place the verified file in C:\Windows\SysWOW64 and register it with the 32-bit regsvr32 from that folder; use System32 for 32-bit Windows, and never download an untrusted replacement DLL or OCX.

Full walkthrough, edge cases and why it works
In this guide · 5 sections
  1. 01Step 1: Diagnose the Error (Missing vs. Unregistered)
  2. 02How to Fix MSCOMCTL.OCX Errors on Windows 10 & 11
  3. 03Advanced Troubleshooting: Regsvr32 Succeeded but Error Persists
  4. 04Why MSCOMCTL.OCX Sometimes Lives Inside Your Office Folder
  5. 05MSCOMCTL.OCX vs. MSCOMCT2.OCX: What Is the Difference?

The run-time error 339 indicating MSCOMCTL.OCX is missing or not correctly registered happens because Windows 10 and 11 no longer ship with legacy Visual Basic 6.0 ActiveX libraries by default.

  • Affected OS: Windows 10 (Build 10586 and later), Windows 11
  • Architecture: Occurs primarily on 64-bit systems running 32-bit legacy applications
  • Target Path (64-bit Windows): C:\Windows\SysWOW64\mscomctl.ocx
  • Target Path (32-bit Windows): C:\Windows\System32\mscomctl.ocx
  • Missing Components: ListView, TreeView, ToolBar, TabStrip, Slider, ImageCombo

Step 1: Diagnose the Error (Missing vs. Unregistered)

Most users immediately search for a replacement file online. This approach is often unnecessary and poses a severe security risk. The control might already exist on your system but lacks the proper registry entries.

Open your File Explorer and navigate to your Windows installation drive. If you use a 64-bit version of Windows, check the SysWOW64 folder. If you use a 32-bit version, look inside the System32 folder.

Scroll down and look for the specific OCX file. Finding the file here changes your entire troubleshooting path. If the file is present, your issue is strictly a registry failure. If the folder does not contain the file, you are dealing with a genuinely missing dependency.

If neither check gives you a clear answer, Dependency Walker (depends.exe) shows exactly which sub-dependency is failing to load. Microsoft no longer maintains the tool, but it still runs fine on modern Windows and catches version conflicts that File Explorer cannot show you.

How to Fix MSCOMCTL.OCX Errors on Windows 10 & 11

Method 1: Extract the OCX File From the App Installer (Safest)

Many developers of legacy applications actually packed the required ActiveX controls inside their own installation archives. Modern Windows security protocols often block these older installers from silently dropping system files into the Windows directory during setup.

You can bypass this restriction manually. Download a reliable archive tool like 7-Zip. Right-click the problematic application setup file and choose to open the archive.

Search the extracted folders for mscomctl.ocx. Once found, copy it to the correct system directory:

  • 64-bit Windows: C:\Windows\SysWOW64\
  • 32-bit Windows: C:\Windows\System32\

You will need administrator privileges to paste into these protected folders. After copying, follow the Regsvr32 steps in Method 2 to register the file.

Method 2: Register the File Manually Using Command Prompt (Regsvr32)

Placing the file in the correct directory is only half the battle. Windows remains completely unaware of the component until you explicitly register it using the Microsoft Register Server tool.

Press the Windows key, type cmd, right-click Command Prompt, and select Run as administrator. This step is non-negotiable. Standard user privileges will return an error code immediately.

Type the following command for a 64-bit operating system and press Enter:

cmd1 line
regsvr32 C:\Windows\SysWOW64\mscomctl.ocx

For a 32-bit operating system, use this command instead:

cmd1 line
regsvr32 C:\Windows\System32\mscomctl.ocx

A dialog box will appear confirming the DllRegisterServer function succeeded. Restart your application.

Method 3: Install the Official Microsoft VB6 Security Rollup (KB3096896)

Avoid downloading missing system components from random driver or DLL repositories. These third-party sites frequently bundle malware with outdated file versions.

Microsoft still hosts the official Visual Basic 6.0 Common Controls update on their update catalog. Download KB3096896 directly from the Microsoft Update Catalog to get version 6.1.98.46, the most current security rollup for these libraries.

Running this official executable automatically places the correct files in the right directories and handles the registry entries in the background. This is the cleanest path when the OCX file is genuinely absent from your system and you want a verified, malware-free source.

Advanced Troubleshooting: Regsvr32 Succeeded but Error Persists

Receiving the success message from the command prompt does not guarantee a functioning application. User Account Control (UAC) virtualization sometimes isolates registry changes, preventing your legacy app from reading the newly created keys.

Running your legacy application as an administrator often bypasses this virtualization layer. Right-click your application shortcut, navigate to the compatibility tab, and check the box to always run the program as an administrator.

Similar to the underlying cause of the 0xc000007b error on Windows, mixing architectures creates hard-to-trace dependency loops. If you are developing macros for Microsoft Office, ensure the bit-version of Office matches the bit-version of the ActiveX control you are trying to call. A 64-bit installation of Excel cannot load a 32-bit OCX file directly.

Why MSCOMCTL.OCX Sometimes Lives Inside Your Office Folder

A recent Microsoft Office install can quietly place its own copy of mscomctl.ocx inside C:\Program Files\Microsoft Office\root\vfs\system instead of the system directory. Windows never registers this copy for other applications, so your legacy app keeps reporting the file as missing even though it technically exists on disk.

Copy that file out of the Office folder and into SysWOW64 or System32 before registering it. Pointing regsvr32 directly at the Office path can throw a registration error of its own, since that folder sits under a virtualized path Windows treats differently from the real system directories.

Version mismatches cause a similar kind of confusion. VB6 applications are often built against a specific release, such as 6.1.98.39, and will refuse to load a newer one like the 6.1.98.46 from the KB3096896 rollup. Right-click the OCX file, open Properties, and check the Details tab for the file version before assuming registration alone will fix the crash.

MSCOMCTL.OCX vs. MSCOMCT2.OCX: What Is the Difference?

Users frequently confuse these two files during the troubleshooting process. They are entirely separate libraries responsible for completely different user interface elements.

MSCOMCTL.OCX handles standard list views, tree structures, toolbars, and sliders. Without it, modern-looking data grids in legacy software simply fail to render.

MSCOMCT2.OCX contains specialized date and time components: the classic MonthView calendar dropdown, the UpDown spinner arrows, and the Date Time Picker control. Downloading one will not fix errors specifically calling for the other. Check the exact filename in the error message before applying any fix.

If your application calls both files and neither is registered, you will need to repeat the process for each one separately. Both are registered the same way via Regsvr32, just with different filenames.

Excel users who encounter this error are often running macros, if you also need to clean up your sheets, removing blank rows in Excel covers the safest methods.

Quick answers

Frequently asked questions

Where can I safely download MSCOMCTL.OCX for Windows 10?

The safest source is the official Microsoft Update Catalog. Search for KB3096896 on catalog.update.microsoft.com to download the Visual Basic 6.0 Common Controls security rollup directly from Microsoft. Avoid third-party DLL download sites, which frequently bundle malware with outdated file versions.

What is the difference between MSCOMCTL.OCX and MSCOMCT2.OCX?

They are separate libraries. MSCOMCTL.OCX handles standard controls like ListView, TreeView, ToolBar, and Slider. MSCOMCT2.OCX handles date and time components: MonthView, UpDown spinners, and DateTimePicker. If your error message names a specific file, only that file needs to be fixed.

Why does MSCOMCTL.OCX error appear on Windows 10 and 11?

Windows 10 and 11 do not ship with legacy Visual Basic 6.0 ActiveX libraries. Applications built with VB6 expect these files to exist in the system directory, so when they are absent or not registered, the app throws a run-time error 339 and refuses to launch.

Does Regsvr32 need to run as administrator for OCX files?

Yes. Without administrator privileges, Regsvr32 cannot write the required entries to the Windows registry. The command will return an error code immediately. Always open Command Prompt by right-clicking and selecting Run as administrator before running the regsvr32 command.

Regsvr32 says DllRegisterServer succeeded but the app still crashes. What now?

This usually means UAC virtualization is isolating the registry change from the application. Try right-clicking the application shortcut, go to Properties, open the Compatibility tab, and check the box to always run as administrator. Also verify that the bit version of the app matches the OCX file location: 32-bit apps must use the SysWOW64 path on 64-bit Windows.

Which folder should MSCOMCTL.OCX go in on 64-bit Windows?

On 64-bit Windows, place the file in C:\Windows\SysWOW64. This is the correct location for 32-bit ActiveX controls on a 64-bit system. Using System32 instead will cause registration to fail or the application to still report the file as missing.

Why is mscomctl.ocx inside my Microsoft Office folder instead of System32?

Recent Office installs sometimes place their own copy in C:\Program Files\Microsoft Office\root\vfs\system, which Windows never registers for other applications. Copy the file into SysWOW64 (64-bit) or System32 (32-bit) and register it from there instead.

I registered mscomctl.ocx but the app says it needs a different version. What now?

Check the file version on the Details tab of its Properties dialog. VB6 apps are often hardcoded to a specific build like 6.1.98.39, and a newer file from KB3096896 (6.1.98.46) can still trigger a version error. Replace it with the exact version your app expects.

Something wrong or out of date?

Tools change fast. Tell the editor what no longer works.