通常不应将 DLL 当作独立程序来安装。如果 Windows 提示文件缺失,正确做法取决于应由哪个组件提供该文件:程序本身、Visual C++ Redistributable、DirectX 或 Windows。不要一开始就下载文件并将其复制到系统文件夹。本指南提供三种实用方法:恢复提供该文件的组件、检查 Windows,以及执行 DLL 诊断。每种方法完成后,请检查出现错误的程序或游戏能否正常启动。

是否真的需要手动安装 DLL?

DLL 是应用程序连同其依赖项一起加载的库,并不是通用安装包。因此,“下载 xxx.dll 并放入 System32 ”通常不能解决根本原因。该文件可能还需要其他 DLL、与应用程序版本不匹配,或者架构不同。

需要的内容 安全做法
某个特定程序的 DLL 从官方来源重装该程序
vcruntime 、 msvcp 、 msvcr 安装或修复相应的 Microsoft Visual C++ Redistributable
d3dx9 、 xinput 、 d3dcompiler 修复官方 DirectX 组件或重装游戏
Windows 系统 DLL 先运行 DISM,再运行 SFC
开发者提供的独立 DLL 严格遵循开发者文档
来自互联网的未知 DLL 不要手动安装

在 Windows 中安装 DLL:方法快速对比

方法 最适合的情况 有效性 用户操作量
安装组件或重装程序 仅一个应用程序报错,或已知库文件名 正确识别组件时较高 较低
DISM 和 SFC 多个程序报错及系统 DLL 问题 针对 Windows 组件较高 中等
Fionn DLL Fixer 原因不明确,或需要检查 DLL 与依赖项 自动化诊断和修复 较低

方法 1:安装组件或重装程序

适用情况: 错误只在一个程序中出现,或者文件名指向已知运行库。例如,对于 vcruntime140.dll ,不要寻找单独的文件;应安装或修复 Microsoft Visual C++ Redistributable。对于 d3dx9 、 xinput 和 d3dcompiler ,请使用游戏的官方安装程序或官方 DirectX 组件。

  1. 记录错误消息中的完整 DLL 文件名和程序名称。
  2. 如果错误只与一个程序有关,请打开 设置 → 应用 → 已安装的应用 。
    Windows 中的程序和功能界面
  3. 卸载有问题的程序,或者在可用时使用其官方修复功能。
  4. 仅从开发者官方网站或获取该程序的商店下载安装程序。
  5. 安装程序或其指定组件,然后再次启动程序。

验证: 程序启动时不再显示“找不到 DLL”消息。如果安装程序仍要求同一个文件,请确认所选组件版本与应用程序架构一致:32 位程序使用 x86,64 位程序使用 x64。

DLL 应安装到哪里:System32 还是 SysWOW64?

不要仅根据文件夹名称作出选择。在 64 位 Windows 上, System32 包含 64 位系统库,而 SysWOW64 包含 32 位系统库;这些名称因历史原因看起来恰好相反。不过,Windows 不会只在一个固定文件夹中查找 DLL:程序目录、系统目录及其他允许的搜索路径都会参与。并且,DLL 本身还可能依赖其他库。

是否需要通过 regsvr32 注册 DLL?

默认情况下不需要。 regsvr32 不是 DLL 安装程序:它只能用于支持相应自注册机制的 DLL 和 OCX。普通的 DLL 缺失错误并不意味着需要注册。只有当程序开发者或其官方文档明确要求注册某个文件,并提供了适用命令时,才使用 regsvr32 。

方法 2:修复 Windows 系统文件

适用情况: 多个无关程序出现相同错误、Windows 发生故障后,或怀疑系统组件已损坏时。Microsoft 建议先运行 DISM,再运行 SFC。

DISM.exe Online Cleanup Image Restorehealth 命令
  1. 打开 Windows 终端(管理员) 。
  2. 运行以下命令并等待其完成:
    DISM.exe /Online /Cleanup-image /Restorehealth
        
  3. DISM 完成后,运行以下命令:
sfc /scannow
  
  1. 如果 Windows 提示已修复文件,请重启计算机。
  2. 再次启动有问题的应用程序。

验证: SFC 完成扫描并报告结果,且应用程序打开时不再出现原来的错误。详情请参阅 Microsoft 的 SFC 和 DISM 说明 。

方法 3:使用 Fionn DLL Fixer 检查 DLL 和系统组件

适用情况: 需要诊断缺失、损坏或不兼容的 DLL、System32 问题,或 DirectX、Visual C++、.NET、OpenAL 和 XInput 依赖项问题,而手动确定组件耗时较长时。适用于 Windows 的 Fionn DLL Fixer 支持扫描、修复和重新检查。

  1. 启动 Fionn DLL Fixer,并等待自动 DLL 和系统问题扫描完成。 启动 Fionn DLL Fixer
  2. 扫描完成后,单击 修复 以开始处理检测到的问题。 扫描完成后,单击“修复”以自动修复所有检测到的 DLL 和系统问题
  3. 等待修复过程完成;进行期间,按钮显示 正在修复 。 等待修复过程进行
  4. 在确认对话框中单击 确定 ;如有提示,请重启计算机。 修复完成后,在确认对话框中单击“确定”
  5. 如果重启后错误仍然存在,单击 重新检查 ;如发现新问题,再次选择 修复 。 如果重启后问题仍然存在,单击“重新检查”以再次扫描

验证: 重新扫描不再显示原有问题,并且应用程序可以启动。此方法可简化诊断,但如果程序自身文件已损坏,仍不能替代重装该程序。

结论

要在 Windows 中正确安装 DLL,应先确定提供该文件的组件,而不是为单个文件寻找放置位置。若只有一个程序报错,请重装该程序或官方运行库;若多个程序发生系统错误,请先运行 DISM,再运行 SFC。如果错误来源不明确,且需要检查 DLL、系统路径和游戏依赖项,请使用 Fionn DLL Fixer 。只有问题程序成功启动,才能确认问题已解决。如果消息没有变化,请保存其完整文本并联系开发者的官方支持。

常见问题

可以把 DLL 放到程序文件夹吗?

只有当开发者的官方文档明确要求为特定程序版本这样做时才可以。其他情况下,请重装程序或其运行库;这样能恢复兼容的一组依赖项。

为什么 64 位 DLL 不应自动放入 SysWOW64?

在 64 位 Windows 上, SysWOW64 用于 32 位系统库。但手动选择文件夹仍不是通用解决方案,因为 DLL 按搜索规则加载,并且可能依赖其他文件。

何时需要使用 regsvr32 命令?

仅当 DLL 或 OCX 支持自注册,且开发者明确要求时才需要。它不能修复大多数 DLL 缺失消息。

遇到 vcruntime140.dll 该怎么办?

请从官方来源安装或修复相应的 Microsoft Visual C++ Redistributable,或者重装需要它的程序。不要从非官方目录下载单独文件。

是否需要同时运行 DISM 和 SFC?

要修复系统文件,Microsoft 建议按 DISM、再 SFC 的顺序执行。这些命令不能替代重装单独程序的文件。