How to Inspect or Open a .DLL File Safely in Windows (Without Breaking System Files)

Help Desk Geek Staff · Edited by Aseem Kishore
12 min read

Help Desk Geek is reader-supported. We may earn a commission when you buy through links on our site. Learn more.

You double-click a .DLL file and Windows asks “How do you want to open this file?”, or an app refuses to start with “The program can’t start because MSVCP140.dll is missing from your computer.” A DLL isn’t something you open directly, because other programs load it. You can still look inside one safely, and you can fix “missing DLL” errors without touching system files.

How to Open a DLL File: The Quick Answer

You don’t run or open a DLL the way you open a document or an .exe. To see what’s inside, open a copy of it in an inspection tool. Use File Explorer’s Properties dialog, Dependencies, Resource Hacker, or dumpbin for native Windows DLLs, and use ILSpy or dotPeek for .NET DLLs.

If you’re here because of a “missing DLL” error, skip inspection and repair the component that owns the file with sfc /scannow, DISM, or the official Microsoft Visual C++ Redistributable.

GoalToolInstall needed?Works on
Check version, publisher, signatureFile Explorer PropertiesNoAny DLL
See which DLLs it depends onDependenciesYes (free, open source)Native DLLs
Browse icons, version info, stringsResource HackerYes (check license at download)Native DLLs
List exported functions and headersdumpbinVisual Studio or Build ToolsNative DLLs
Read decompiled C# or IL codeILSpy or dotPeekYes (free).NET DLLs
Fix a missing or corrupted system DLLsfc /scannow, DISMNoWindows system files
Fix missing MSVCP###.dll / VCRUNTIME###.dllVisual C++ RedistributableYes (Microsoft download)Apps built with Visual C++

What Is a DLL File?

A DLL (Dynamic Link Library) is a container of code and resources that programs share. Windows itself, games, and Office all load DLLs at runtime to borrow functions, icons, or dialog layouts. A DLL may have an optional initialization routine that runs when a program loads it, but it has no normal launch point for you as a user, so double-clicking one usually just brings up an “open with” prompt or an error.

DLLs come in two broad types:

  • Native DLLs contain compiled machine code for x86, x64, or ARM64. You can list what they contain, and reverse-engineering tools can disassemble them into approximate pseudocode, but the original source code, names, and comments are generally gone.
  • .NET assembly DLLs contain Intermediate Language (IL). A decompiler can turn IL back into fairly readable C#.

Never edit or overwrite a system DLL. Changing a file invalidates an embedded digital signature, and many Windows files are verified through catalog signatures that the modified file no longer matches. Depending on the file and the app, the result can range from no visible effect to crashes, repair prompts, or security warnings.

Before You Begin

  • A Windows 10 or Windows 11 PC
  • An administrator account (required for sfc and DISM)
  • An internet connection to download the inspection tools you want
  • Visual Studio or Build Tools for Visual Studio, but only if you want dumpbin
  • A recent backup to an external hard drive or cloud storage before running any repair commands
RequirementDetails
OS versionWindows 10 or Windows 11
Admin rightsNeeded for sfc /scannow and DISM
dumpbinShips with Visual Studio / Build Tools, not sold separately
CostProperties, sfc, DISM, Dependencies, and ILSpy cost nothing; Visual Studio/Build Tools, dotPeek, and Resource Hacker have their own license terms, so check them when you download

Step-by-Step Guide: Inspect a DLL Without Touching the Original

Safety Check Before You Begin

Copying a DLL to a new folder does not make it safe to inspect. Checking its Properties (Step 2) only reads metadata, but Dependencies, Resource Hacker, dumpbin, and decompilers parse the whole file, so a malformed or malicious DLL can still target them. Before you open an unfamiliar or suspicious file, scan it with Microsoft Defender or another trusted antivirus tool, and don’t run, register, or double-click it to “test” it.

If the file came from an untrusted source or you still have doubts after scanning, do every step below inside Windows Sandbox (Windows 10/11 Pro, Enterprise, and Education) or a disposable virtual machine, or submit it to a reputable online analysis service instead of opening it on your main PC. Keep confidential or proprietary binaries off public scanning services, since many of them share submitted samples publicly.

Step 1: Make a Safe Copy of the DLL

  • Open File Explorer and go to the folder that contains the DLL.
  • Right-click the DLL and select Copy.
  • Go to Documents, create a new folder named DLL inspection, and paste the file there.

Expected result: You now work only on the copy. The original in C:\Windows\System32 or in the app folder stays untouched.

Working on a copy protects the original from accidental changes, but it doesn’t make a suspicious file safe to open. If you haven’t already scanned the file as described above, do that before continuing.

Tip: If Windows says the file is in use, close the app that uses it or restart your PC. Don’t force-close unrelated system processes to unlock it.

Step 2: Check the File’s Properties

  • Right-click the copied DLL and choose Properties.
  • On the General tab, confirm the file type and size.
  • Open the Details tab and check File version, Product name, and Copyright.
  • Open the Digital Signatures tab, if it’s present, and check who signed the file.
Windows 11 File Explorer Properties dialog for a DLL with the Details tab open showing File version and Product name fields highlighted, and the Digital Signatures tab visible showing the signer name

Expected result: A legitimate Microsoft or vendor DLL usually shows a matching company name and a signature. An unsigned DLL deserves caution, but it isn’t automatically malware. Some genuine Windows files are catalog-signed and don’t show this tab at all.

Step 3: View Dependencies with the Dependencies App

  • Download Dependencies from its official open-source project page and extract the ZIP.
  • Run DependenciesGui.exe.
  • Click File > Open and select your copied DLL.
  • Expand the tree in the left pane to see every DLL that your file imports.
Dependencies GUI showing a loaded DLL's module tree on the left, with a missing dependency entry and the x86/x64 architecture indicator highlighted

Expected result: You see a tree of imported modules, with missing or architecture-mismatched entries flagged. A flag is a lead, not proof: API sets, delay-loaded modules, and optional imports can show as missing even on a healthy PC, so focus on non-Windows DLLs that also appear in the app’s error message.

Note: Entries that start with api-ms-win- are internal Windows API sets, not real files. Don’t try to download them.

Step 4: Browse Resources with Resource Hacker

  • Download Resource Hacker from the developer’s official site and install it.
  • Launch it and click File > Open.
  • Select your copied DLL.
  • Expand Version Info, Icon, or String Table in the left pane.
Resource Hacker window with a native DLL loaded, the resource tree expanded in the left pane, and the Version Info node selected and highlighted

Expected result: You can read embedded version info, manifests, dialogs, and strings. Resource Hacker can also edit resources, so view only and never save changes over a real system file.

Step 5: List Exports and Headers with dumpbin

  • Install Visual Studio or Build Tools for Visual Studio and select the C++ build tools so the MSVC tools (including dumpbin) are installed.
  • Click Start, type Developer Command Prompt, and open it.
  • Run these commands, replacing example.dll with your file name:
cd /d "%USERPROFILE%\Documents\DLL inspection"
dumpbin /exports example.dll
dumpbin /headers example.dll
Developer Command Prompt for Visual Studio showing output of dumpbin /exports example.dll with the ordinal and name columns of the export list highlighted

Expected result: /exports lists the functions the DLL exposes to other programs. In /headers, the machine line shows whether the file is x86, x64, or ARM64. A listed export isn’t necessarily safe or meant for you to call directly.

Tip: Run dumpbin /clrheader example.dll to check whether the file is a .NET assembly. If it shows a CLR header, go to Step 6.

Step 6: Decompile a .NET DLL with ILSpy (or dotPeek)

  • Download the latest ILSpy build from the official ILSpy GitHub releases page and extract it.
  • Launch ILSpy and click File > Open.
  • Select your copied .NET DLL.
  • Expand the assembly in the left pane and click a class or method.
  • Use the language drop-down in the toolbar to switch between C# and IL.
ILSpy main window with a .NET DLL loaded, the assembly tree pane on the left, decompiled C# code on the right, and the C#/IL language selector highlighted

Expected result: You see readable classes and methods. ILSpy reads code without running it, but it still has to parse the file, so open an unfamiliar or suspicious assembly only inside Windows Sandbox or a disposable virtual machine.

Decompilers can still choke on malformed or deliberately adversarial files, and decompiled output can contain code that’s dangerous if you build or run it. Treat ILSpy and dotPeek as read-only: view the code, and don’t compile or execute anything they produce.

Prefer JetBrains? Install dotPeek from JetBrains’ website, then use File > Open to load the copied DLL the same way. Check JetBrains’ current license terms when you download it.

Fixing a Missing DLL Error the Safe Way

Errors like “MSVCP140.dll is missing” tempt you to grab a single DLL from a download site. Don’t. Loose DLLs from those sites can be the wrong architecture, out of date, tampered with, or outright malware. Repair the component that owns the file instead, starting with the least invasive fix.

Fix #1: Install the Official Visual C++ Redistributable

Use this fix when the error names MSVCP###.dll, VCRUNTIME###.dll, or a similar Visual C++ runtime file.

  • Go to Microsoft’s latest supported Visual C++ downloads page.
  • Download the package that matches the app: vc_redist.x64.exe, vc_redist.x86.exe, or vc_redist.arm64.exe. A 32-bit app on 64-bit Windows needs the x86 package, and some setups need both x86 and x64 installed side by side. Older apps may also need an older runtime generation, such as Visual C++ 2010 or 2013, which the latest package doesn’t replace. On an ARM64 PC, Microsoft’s current x64 package also contains the ARM64 binaries and installs them where needed, so check the download page before picking a package.
  • Run the installer, accept the license terms, and click Install. If it’s already installed, choose Repair.
Microsoft Visual C++ Redistributable setup dialog showing the license agreement checkbox and Install button, with the package architecture visible in the title bar
  • Restart the affected app.

The list of Visual Studio versions each package covers changes over time, so confirm it on the download page. Microsoft’s Redistributing Visual C++ files guide explains why the redistributable is the supported way to deliver these DLLs.

Fix #2: Run System File Checker

Use this fix when a Windows system DLL appears missing or corrupted, especially after an update or a crash.

SFC repairs protected Windows components it finds damaged, provided a clean source file is available; it doesn’t fix third-party application DLLs or guarantee every change gets reversed. SFC on its own is a quick first check, but Microsoft’s full repair sequence runs DISM (Fix #3) first, because DISM restores the source files SFC repairs from, and then runs SFC again.

  • Click Start and type cmd.
  • Right-click Command Prompt and select Run as administrator.
  • Run this command:
sfc /scannow
Elevated Command Prompt window showing sfc /scannow completed with the Windows Resource Protection result message highlighted
  • Wait for the scan to reach 100%. Restart Windows if it reports that it repaired files.

Fix #3: Repair the Component Store with DISM

Use DISM for a full repair, and always when SFC reports that it couldn’t fix some files. DISM repairs the Windows image that SFC pulls clean copies from, but like SFC it can only restore components it manages, not third-party application files.

  • Open Command Prompt as administrator.
  • Run these commands one at a time:
DISM /Online /Cleanup-Image /CheckHealth
DISM /Online /Cleanup-Image /ScanHealth
DISM /Online /Cleanup-Image /RestoreHealth
Elevated Command Prompt window showing DISM /Online /Cleanup-Image /RestoreHealth with the progress percentage and completion line highlighted
  • Run sfc /scannow again.
  • Restart your PC.

If the error is “Entry point not found,” reinstall or repair the app that shows it rather than copying a different DLL version over the existing one.

Configuration: What the Key Readouts Mean

Setting / OutputWhat it tells you
Digital Signatures tabWhether the file is signed and by whom. Unsigned files deserve caution but aren’t proof of malware.
dumpbin /exportsFunctions the DLL exposes to other programs
dumpbin /headersPE header details, including the target architecture (x86/x64/ARM64)
Dependencies architectureConfirms the DLL’s architecture matches the app that loads it

Tips and Troubleshooting

“The DLL is not a valid Win32 application.” This usually means a 32-bit/64-bit mismatch or a file that isn’t a real Windows DLL. Check the architecture with dumpbin /headers or Dependencies. If the error appears when you launch an app, see how to fix “This app can’t run on your PC” errors.

ILSpy shows garbage or nothing useful. The DLL is probably native, or it’s obfuscated. Confirm it’s a .NET assembly first. For native files, switch to dumpbin, Dependencies, or Resource Hacker.

Dependencies flags api-ms-win-* DLLs as missing. These are Windows loader contracts. If the app runs, ignore them and focus on missing third-party DLLs.

You found an unfamiliar DLL and don’t trust it. Inspect the signature in Properties first, and scan it with Microsoft Defender or another trusted antivirus tool before opening it in any other tool.

If it still looks suspicious after scanning, open it only on a disposable VM or submit it to a reputable online analysis service rather than your main PC, and keep confidential files off public scanners.

Editing a system DLL broke something. Try Fix #2 and Fix #3. SFC and DISM can repair protected Windows components when they detect corruption and have a clean source to restore from, but they won’t necessarily reverse every change or fix files they don’t manage.

For a third-party DLL, repair or reinstall the app that owns it instead. If repairs don’t resolve the problem, restore from a recent backup or use Windows recovery options.

Wrapping Up

Many “missing DLL” errors are solved by the official Visual C++ Redistributable (Fix #1), and DISM plus SFC cover damaged Windows files. If neither helps, repair or reinstall the app that shows the error, since it may need a different runtime or a third-party DLL it ships with.

For simple curiosity, Properties plus Dependencies covers most needs without any developer tools. If SFC and DISM keep finding new corruption after every restart, the cause is usually bigger than a single bad DLL. Run a full Microsoft Defender scan, check the drive with chkdsk and its SMART health status, and test memory with Windows Memory Diagnostic before replacing any hardware.

StepActionApplies To
1–2Copy the file, check PropertiesAny DLL
3–5Dependencies, Resource Hacker, dumpbinNative DLLs
6ILSpy or dotPeek.NET DLLs
Fix #1Visual C++ RedistributableMSVCP/VCRUNTIME errors
Fix #2–3sfc /scannow, DISMWindows system DLLs

Resources