Program file
msvbvm50.dll: Microsoft's old Visual Basic runtime, or a file that only carries the name?
msvbvm50.dll is the Visual Basic Virtual Machine, the run-time library of Microsoft Visual Basic 5.0. Windows does not include it: an old program written in Visual Basic 5.0, or Microsoft's own run-time package, puts it on the PC. A copy in the Windows system folder or beside such a program is normal. A copy in Downloads, Temp or AppData needs checking.
Prefer to check it yourself? The manual checks follow.
A msvbvm50.dll in C:\Windows\SysWOW64 (C:\Windows\System32 on 32-bit Windows) or next to the .exe of an old program you installed, describing itself as Visual Basic Virtual Machine from Microsoft Corporation with a file version starting with 5.1 or 5.2, is the genuine runtime. It is not a process: Visual Basic 5.0 programs load it when they start.
Windows does not ship or repair this file, so nothing on the PC keeps track of it, and any program can drop a file under that name. A copy in a folder where no program lives, one that reports another company, or one far from the known size of about 1.3 MB is not Microsoft's runtime.
- Publisher
- Microsoft Corporation
- Description in the file
- Visual Basic Virtual Machine, file version 5.1.x or 5.2.x
- Belongs to
- Visual Basic 5.0. Programs written with it need the file; Visual Basic 6.0 programs use msvbvm60.dll instead, which ships in Windows
- Installed by
- The installer of a Visual Basic 5.0 program, or Microsoft's run-time package Msvbvm50.exe. Not by Windows itself
- Genuine folder
- C:\Windows\SysWOW64 on 64-bit Windows, C:\Windows\System32 on 32-bit Windows, or the folder of the program that uses it
- Size
- 1,342,177 or 1,352,663 bytes across the 3 Microsoft copies collected in a public DLL catalogue, all 32-bit
- Runs as a process
- No. It is a library loaded into the Visual Basic 5.0 program that uses it
- Architecture
- 32-bit only. Microsoft states that the Visual Basic runtime files are 32-bit and run on 64-bit Windows in the WOW emulation environment
What msvbvm50.dll does
msvbvm50.dll is the run-time library of Visual Basic 5.0, which its version resource calls the Visual Basic Virtual Machine. A program compiled with Visual Basic 5.0 is small because it hands much of its work to this library: starting up, drawing its windows and controls, handling text, numbers and files, and reporting errors. Without the file such a program does not start at all.
Microsoft lists msvbvm60.dll, the Visual Basic 6.0 runtime, among the files that ship in Windows, but msvbvm50.dll is not on that list. So the older runtime reaches a PC only through a program's installer or through Microsoft's package Msvbvm50.exe, both of which put it into the Windows system folder or next to the program. That is why the name alone says nothing: a genuine copy is identified by its folder, what it reports about itself and its size.
About .dll files. A .dll file is a library: it cannot run on its own and is loaded into a program's process. It does not appear in Task Manager under its own name; Process Explorer shows which process loaded it.

How to check a copy of msvbvm50.dll
Four questions decide it: where the file is, what it says about itself, how big it is, and whether a program you know uses it. A library never shows in Task Manager under its own name, so use these checks instead.
- List every copy and where it sits. One copy in C:\Windows\SysWOW64 (or System32 on 32-bit Windows) is normal, and so is a copy next to the .exe of an old program you installed. Look closer at copies in Downloads, Desktop, Temp, AppData or ProgramData, and at a copy beside an .exe with a random name.
Get-ChildItem -Path C:\ -Filter msvbvm50.dll -Recurse -ErrorAction SilentlyContinue | Select-Object FullName, Length, LastWriteTime - Read the version resource. Microsoft's file reports Microsoft Corporation as the company, Visual Basic Virtual Machine as the description and a file version that starts with 5.1 or 5.2. Empty fields or another company mean the file is not Microsoft's runtime, though a careful fake can copy these fields.
(Get-Item "C:\path\to\msvbvm50.dll").VersionInfo | Format-List CompanyName, FileDescription, FileVersion - Compare the size. The Microsoft copies in the catalogue are 1,342,177 or 1,352,663 bytes. A file of a few kilobytes or several megabytes under this name is a different file, whatever its version fields say. Use the file check on this page to compare the checksum with the known copies.
(Get-Item "C:\path\to\msvbvm50.dll").Length - Check the digital signature. A build this old may carry no signature of its own, so NotSigned alone does not prove a fake. HashMismatch, or a signer that is not Microsoft, does mean the file is not Microsoft's as shipped.
Get-AuthenticodeSignature "C:\path\to\msvbvm50.dll" | Format-List Status, SignerCertificate - Find the program it belongs to. A copy in the system folder serves every Visual Basic 5.0 program on the PC, so think of the old programs you use. A copy outside the system folder should sit beside the .exe of a program you can name. A lone runtime in a folder with no program, or beside one you never installed, is the reason to keep looking.
A copy that passes these checks clears that one file. It says nothing about the program that brought it: if that program is one you do not recognise, the program is what needs checking.

Check your msvbvm50.dll
Choose the msvbvm50.dll you are unsure about. Its SHA-256 and SHA-1 checksums are calculated in your browser and compared with the 3 versions of the file known from a public DLL catalogue.
The file stays on your computer. Nothing is uploaded: the checksum is computed locally.
Do you need msvbvm50.dll?
Keep the copy in the system folder and any copy inside an old program you use: without it those programs do not start. A copy that failed the checks above came with something else, and the safe way out is to remove that program, not only the DLL.
- Leave the system folder copy alone. A genuine msvbvm50.dll in C:\Windows\SysWOW64 may be used by any Visual Basic 5.0 program on the PC. Windows itself does not need it, but deleting it gains nothing and stops those programs from starting.
- Remove old programs you no longer use. Open Settings, Apps, Installed apps, find the old program and uninstall it. Its own copy of msvbvm50.dll goes with it. The shared copy in the system folder usually stays behind, which is harmless.
- Uninstall a program you do not recognise. If the copy that failed the checks sits beside a program you never installed, uninstall that program from Installed apps. If it has no uninstaller, note the folder path, then delete the whole folder after the scan below, not only the DLL.
- Run a Microsoft Defender full scan. Open Windows Security, Virus and threat protection, Scan options, Full scan. Quarantine what it finds, then look at Protection history for anything found in Downloads, Temp or AppData.
- Run the offline scan. Some malware hides while Windows runs. The offline scan restarts the PC and scans before Windows starts. It takes about 15 minutes.
Start-MpWDOScan - Check what starts with Windows. Open Task Manager, Startup apps, and Task Scheduler. After the scan, disable and remove entries that run a program from AppData, ProgramData or Temp that you do not recognise.
Warning signs
| What you see | What it means |
|---|---|
| msvbvm50.dll in Downloads, Desktop, Temp, AppData or ProgramData | No installed program loads it there. Find out what put it there and scan. |
| The Details tab shows a company other than Microsoft Corporation | A different file carrying the runtime's name, not Microsoft's msvbvm50.dll. |
| A size far from about 1.3 MB | Not one of the known Microsoft copies. Check the version resource and the folder. |
| The signature check shows HashMismatch or a signer that is not Microsoft | The file was changed after it was built, or is not Microsoft's at all. |
| A 64-bit msvbvm50.dll | Microsoft states that the Visual Basic runtime files are 32-bit, and every known copy is. A 64-bit file under this name is something else. |
| One copy in C:\Windows\SysWOW64, reporting Microsoft and version 5.x | Normal. An old program or Microsoft's run-time package installed it. |
Known versions of msvbvm50.dll
A public DLL catalogue lists 3 versions of msvbvm50.dll, from 5.1.43.19 to 5.2.82.44, by Microsoft Corporation. Its copies are uploaded by users and not verified, so a checksum match identifies the version, while the digital signature tells you whether the file is genuine. Even a genuine file clears only the file, not the folder: attackers ship genuine libraries next to a program they abuse, so where the copy sits still decides whether it is safe.
Every version with its checksums, and how to fix msvbvm50.dll errors on uGetFix
Questions people ask
Is msvbvm50.dll a virus?
No, Microsoft's msvbvm50.dll is a harmless runtime library that old Visual Basic 5.0 programs need. Because Windows does not install or track it, any program can bring a file under that name, so the name alone proves nothing either way. A copy in the system folder or beside an old program, reporting Microsoft Corporation and a 5.x version, is the genuine file.
Why is msvbvm50.dll on my PC if Windows does not include it?
An old program you installed brought it, or someone installed Microsoft's Visual Basic 5.0 run-time package. Programs written in Visual Basic 5.0 cannot start without it, so their installers added it to the Windows system folder or kept a copy beside the program. Old utilities, business tools, engineering software and CD launchers are typical.
What is the difference between msvbvm50.dll and msvbvm60.dll?
msvbvm50.dll is the runtime of Visual Basic 5.0 and msvbvm60.dll the runtime of Visual Basic 6.0. Microsoft ships msvbvm60.dll in Windows and supports it for the life of supported Windows versions; msvbvm50.dll is not part of Windows. A program loads only the one it was built with, so neither replaces the other.
Can I delete msvbvm50.dll?
You can, but every Visual Basic 5.0 program on the PC stops starting, and Windows does not restore the file. Deleting a genuine copy gains nothing. If the copy failed the checks and sits beside a program you do not recognise, uninstall that program and run a Microsoft Defender full scan rather than deleting only the DLL.
My msvbvm50.dll is not signed. Is it fake?
Not necessarily. A build of this age may carry no signature of its own, so a missing signature alone is no proof. Look at the other checks: the folder, the company and description in the Details tab, the 5.1 or 5.2 file version and the size of about 1.3 MB. A HashMismatch result or a signer that is not Microsoft is a real warning sign.
Is it safe to install Msvbvm50.exe?
Microsoft's own Msvbvm50.exe, downloaded from download.microsoft.com, is the official Visual Basic 5.0 run-time package. A file with the same name from any other site is not the same thing: check that the download address belongs to Microsoft, and that the installed file passes the checks on this page.
Sources
- Microsoft Learn: Support Statement for Visual Basic 6.0 on Windows (msvbvm60.dll ships in Windows, runtime files are 32-bit)
- Microsoft Q&A: Is MSVBVM50.DLL still available? (Msvbvm50.exe on download.microsoft.com)
- MITRE ATT&CK T1574.001: Hijack Execution Flow: DLL
- Microsoft Learn: Get-AuthenticodeSignature
Version data read on Oct 17, 2026.
Questions and experiences
Ask about this page: members and our editors answer. Reading is open; writing needs a free account.
…