# DLL 缺失与 0xc000007b：找组件，不要下载 DLL

> 按位数、运行库家族和组件存储诊断 DLL 缺失与 0xc000007b，并说明为什么从随机网站下载 DLL 是错的。

**测试环境**

- 版本号: 26100.1742
- 版本: Enterprise LTSC 2024
- 架构: x64
- 证据: E2
- 风险: R1
- 核验日期: 2026-10-28
- 测试机: PVE 9.2.2 VM 361；Windows 11 Enterprise LTSC 2024 26100.1742；官方 VC++ 2015-2022 Redistributable x64 + x86

## 一句话结论

缺 DLL 是**依赖**问题，不是文件问题。装拥有这个 DLL 的官方运行库，或修复组件存储。从“DLL 修复站”下载单个 DLL，是 malware 和版本冲突的常见入口。

> **危险: 不要从第三方站下载单个 DLL**
>
> 文件可能是错的位数（x86/x64）、错的版本，或者带毒。Windows 自带组件有签名；运行库有签名安装包。用这些。

## 先读错误

| 症状 | 大概率归属 | 第一步 |
|---|---|---|
| `0xc000007b` | 32 位程序加载 64 位 DLL（或相反） | 查程序架构和 DLL 目录 |
| `0xc0000135` | .NET Framework 或托管依赖缺失 | 安装对应 .NET 版本 |
| `vcruntime140.dll` / `msvcp140.dll` | Visual C++ 2015–2022 运行库 | 同时装官方 x64 和 x86 |
| `d3dx9_43.dll` | DirectX 9 旧运行库（常见于老游戏） | 装 DirectX End-User Runtime |
| `api-ms-win-crt-*.dll` | Universal C Runtime（Win10/11 组件） | `sfc` / `DISM`，再跑 Windows Update |
| `xinput1_3.dll` | DirectX/XInput 旧组件 | DirectX End-User Runtime |

## 步骤

- [ ] **确认架构** (终端（管理员）)

  ```powershell
  # 托管程序可这样看；原生程序用任务管理器 → 详细信息 → 平台，或 sigcheck -nobanner -a
  $p = 'C:\Path\To\Game.exe'
  [System.Reflection.AssemblyName]::GetAssemblyName($p)
  ```
  32 位游戏不能加载 `System32` 里的 64 位 DLL；它从 `SysWOW64` 加载。混用就会得到 `0xc000007b`。

  预期结果: 程序和 DLL 的位数一致：x64/x64 或 x86/x86。

- [ ] **修复组件存储** (终端（管理员）)

  在管理员终端运行：

  ```powershell
  DISM /Online /Cleanup-Image /RestoreHealth
  sfc /scannow
  ```
  SFC 报“无法修复某些文件”时，先跑 DISM。重启后再试程序。

  预期结果: 两条命令都完成，且没有“无法修复”错误。

- [ ] **安装官方运行库** (终端（管理员）)

  - Visual C++ 2015–2022：从微软装 `x64` **和** `x86`。
  - DirectX 9 旧组件：DirectX End-User Runtime。
  - .NET：装程序目标的大版本（Framework 3.5/4.8，或 .NET 6/8 桌面运行时）。

  预期结果: 程序启动，不再弹缺失 DLL。

- [ ] **看事件查看器** (设置)

  事件查看器 → Windows 日志 → 应用程序。找 `SideBySide`（程序集版本冲突）或 `Application Error`（出错模块）。版本冲突不是“复制一个更新的 DLL”能修的。

  预期结果: SideBySide 或模块加载错误指出具体模块。

## 实验室核对：缺失 VC++ 运行库（E2）

全新 LTSC 26100.1742：

- `C:\Windows\System32\vcruntime140.dll`、`msvcp140.dll`：**不存在**。
- `C:\Windows\SysWOW64\vcruntime140.dll`、`msvcp140.dll`：**不存在**。
- 只有 CLR 变体 `vcruntime140_clr0400.dll`、`vcruntime140_1_clr0400.dll`；那不是 VC++ 2015–2022 运行库。

VM 360（中文 Enterprise LTSC 2024，26100.1742）修复前： System32 与 SysWOW64 的 vcruntime140.dll 都不存在。页面下方表格是同一路径在官方 VC++ 安装后的结果。点击查看原图。

安装官方 Visual C++ 2015–2022 Redistributable（`aka.ms/vs/17/release` 的 `vc_redist.x64.exe` 与 `vc_redist.x86.exe`），退出码均为 0。安装后：

| 路径 | 版本 | 大小 |
|---|---|---|
| `System32\vcruntime140.dll` | 14.44.35211.0 | 124,544 |
| `System32\msvcp140.dll` | 14.44.35211.0 | 557,728 |
| `SysWOW64\vcruntime140.dll` | 14.44.35211.0 | 91,216 |
| `SysWOW64\msvcp140.dll` | 14.44.35211.0 | 447,616 |

`DISM /Online /Cleanup-Image /CheckHealth`：**No component store corruption detected**。

`SFC /verifyonly` 完成，但报告 **Windows Resource Protection found integrity violations**；细节在 `C:\Windows\Logs\CBS\CBS.log`，这次没有执行修复。不要把“SFC 发现违规”直接当成病毒或 DLL 位数问题，也不要指望 SFC 能补回缺失的 VC++ 运行库。

这次验证的是**缺失运行库**路径和官方修复；**没有**复现 `0xc000007b` 弹窗、破解 DLL 或位数错配，这几种仍是未验证。

## `0xc000007b` 的真实原因

1. **位数不匹配**——最常见。
2. **破解或被替换的 DLL**——加载器拒绝，或程序稍后崩溃。
3. **组件存储损坏**——`DISM`/`SFC` 是修复路径。
4. **缺 Visual C++ 运行库**——装 redist，不要装单个 DLL。
5. **游戏 overlay 或反作弊注入了错位数的模块**——先关 overlay 再测。

## 不要这样做

- 不要在 `System32` 和 `SysWOW64` 之间复制 DLL。
- 厂商没说它是 COM 组件，就不要用 `regsvr32` 注册 DLL。
- 不要为了跑 loader 关掉 Defender。
- 不要跟着视频装“DLL 合集”；合集本身就是攻击面。

## 来源

- [Microsoft 支持 — 使用系统文件检查器](https://support.microsoft.com/zh-cn/windows/%E4%BD%BF%E7%94%A8%E7%B3%BB%E7%BB%9F%E6%96%87%E4%BB%B6%E6%A3%80%E6%9F%A5%E5%99%A8%E5%B7%A5%E5%85%B7%E4%BF%AE%E5%A4%8D%E4%B8%A2%E5%A4%B1%E6%88%96%E6%8D%9F%E5%9D%8F%E7%9A%84%E7%B3%BB%E7%BB%9F%E6%96%87%E4%BB%B6-79aa86cb-ca52-166a-92a3-966e85d4094e)
- [Microsoft Learn — DISM /RestoreHealth](https://learn.microsoft.com/zh-cn/windows-hardware/manufacture/desktop/dism-operating-system-package-servicing-command-line-options)
- [Microsoft — 最新受支持的 Visual C++ 可再发行程序包](https://learn.microsoft.com/zh-cn/cpp/windows/latest-supported-vc-redist)

---

来源页面: https://winbook.fyi/zh/windows/fixes/dll-runtime/
