跳转到内容

内存完整性(HVCI):实测代价,以及什么时候该保留

核验于 7 分钟阅读

在 Windows 11 26H2 上实测 HVCI 开关对 CPU 加密、压缩和内存带宽的影响,并说明 VBS 状态检查、驱动兼容与关闭边界。

测试环境Pro (26H2) · 版本号 26300.9457 · x64
E2
版本号
26300.9457
版本
Pro (26H2)
架构
x64
支持
实验室(HVCI 实测)
证据
E2实验室复现, 直通虚拟机实测
风险
R1可回滚设置
核验日期
2026-10-28
测试机
PVE 9.2.2 VM 361;Windows 11 Pro 26H2 26300.9457;4 vCPU/8GB;CPU host;HVCI 关闭/开启各 3 轮 WinSAT
页面类型
实测调优
Windows 11 26H2 的 Windows 安全中心内核隔离页面:内存完整性为开,本地安全机构保护为开。
VM 361 的 Windows 安全中心 → 内核隔离:内存完整性为“开”。开关只读,因为实验室直接写了策略。点击查看大图。

内存完整性(Memory integrity)是 HVCI 的界面名称,全称是“虚拟机监控程序强制的代码完整性”。它是 VBS(基于虚拟化的安全)下的一项服务:把内核代码完整性检查放进 hypervisor 隔离的安全内核里,让内核级恶意代码更难篡改。

本次实验里,打开 HVCI 后,三项合成 CPU/内存测试都没有出现可重复的变慢:

测试(3 轮中位数) HVCI 关闭 HVCI 开启 差异
CPU AES256 加密 4245.6 MB/s 4246.3 MB/s +0.02%
CPU LZW 压缩 457.7 MB/s 461.3 MB/s +0.78%
内存带宽 33878.6 MB/s 34033.8 MB/s +0.46%

这些差异小于同一状态内的轮次波动。正号是噪声,不代表 HVCI 会让 CPU 变快。

结论:默认保留内存完整性。 本次测到的 CPU/内存代价在噪声以下,而内核安全边界是真实的。只有明确点名的不兼容驱动,或你实际负载里可重复的退化,才值得关闭。

网上大部分误判都来自把这两个概念混在一起:

层级 是什么 怎么看
VBS hypervisor 隔离出来的安全环境 VirtualizationBasedSecurityStatus = 2 表示 VBS 在运行
HVCI VBS 下的一项服务:内核/驱动代码完整性 SecurityServicesRunning 包含 2
Credential Guard 另一项 VBS 服务:保护派生凭据 SecurityServicesRunning 包含 1
System Guard 另一项 VBS 服务:启动/系统完整性 SecurityServicesRunning 包含 3

机器完全可能 VBS 在运行,但 HVCI 没开。本次基线就是这样:

VirtualizationBasedSecurityStatus : 2
SecurityServicesConfigured : {0}
SecurityServicesRunning : {0}

{0} 表示没有任何 VBS 安全服务在跑。打开内存完整性后变成:

VirtualizationBasedSecurityStatus : 2
SecurityServicesConfigured : {2}
SecurityServicesRunning : {2}

这时才是 HVCI 真正在运行。

HVCI 会:

  • 在内核代码页执行前做完整性检查;
  • 让有漏洞的驱动或内核漏洞更难运行未签名/被修改的代码;
  • 通过微软的易受攻击驱动阻止列表拦下已知问题驱动;
  • 属于内核/驱动安全,不是杀毒软件,也不是用户态沙箱。

它不会:

  • 拦钓鱼、恶意文档或浏览器漏洞;
  • 替代 Secure Boot、TPM、Windows Update 或 SmartScreen;
  • 因为驱动有签名就保证它安全;
  • 让游戏变快。

真实代价通常在兼容性,不是纯 CPU 吞吐:老反作弊、超频/风扇/RGB 工具、VPN/防火墙过滤驱动、模拟器、采集卡驱动都可能被拦或不稳定。某一台机器因此保留 HVCI 关闭是合理的;“能多几帧”不是合理理由,除非你测过。

终端(管理员)
终端窗口
Get-CimInstance -Namespace root\Microsoft\Windows\DeviceGuard -ClassName Win32_DeviceGuard |
Select-Object VirtualizationBasedSecurityStatus,
SecurityServicesConfigured,
SecurityServicesRunning,
CodeIntegrityPolicyEnforcementStatus

预期结果: 能区分 VBS 状态,以及 SecurityServicesRunning 里是否有 HVCI(2)。

怎么读:

值 含义
VirtualizationBasedSecurityStatus = 0 VBS 关闭
= 1 VBS 已启用但未运行
= 2 VBS 正在运行
SecurityServicesRunning 包含 2 HVCI 正在运行
不包含 2 HVCI 没开,哪怕 VBS 是 2

msinfo32 也会显示 “Virtualization-based security” 相关行,但 DeviceGuard 对象更精确,因为它把 VBS 和每项服务分开。

普通 Windows 11 路径:

设置
  1. 打开 Windows 安全中心。
  2. 进入 设备安全性 → 内核隔离详细信息。
  3. 打开 内存完整性。
  4. 重启。

预期结果: 内存完整性为“开”,Windows 要求重启。

重启后再跑一次 DeviceGuard 命令。SecurityServicesRunning 必须包含 2;界面上的绿色开关本身不能证明服务已经启动。

实验室或受控测试机可以用等价策略:

终端窗口
$dg = 'HKLM:\SYSTEM\CurrentControlSet\Control\DeviceGuard'
New-ItemProperty $dg -Name EnableVirtualizationBasedSecurity -PropertyType DWord -Value 1 -Force
New-ItemProperty $dg -Name RequirePlatformSecurityFeatures -PropertyType DWord -Value 1 -Force
$hvci = Join-Path $dg 'Scenarios\HypervisorEnforcedCodeIntegrity'
New-Item -Path $hvci -Force
New-ItemProperty $hvci -Name Enabled -PropertyType DWord -Value 1 -Force
bcdedit.exe /set '{current}' hypervisorlaunchtype auto
# 重启

RequirePlatformSecurityFeatures = 1 要求 Secure Boot;3 还要求 DMA 保护。按平台实际支持选值。

要关闭,把 HVCI 的 Enabled 改成 0 再重启。看完下面的取舍再动。

方法:

  • 同一台 VM 361,Windows 11 Pro 26H2 26300.9457,4 vCPU / 8GB,CPU host。
  • HVCI 关闭({0})与开启({2})各 3 轮。
  • winsat cpu -encryption、winsat cpu -compression、winsat mem;直接解析 XML 指标。
  • 客户机空闲,同一宿主、同一时间段;无 GPU 负载。

结果(3 轮中位数):

测试 HVCI 关闭 HVCI 开启 开启 vs 关闭
CPU AES256 加密(MB/s) 4245.6 4246.3 +0.02%
CPU LZW 压缩(MB/s) 457.7 461.3 +0.78%
内存带宽(MB/s) 33878.6 34033.8 +0.46%

轮次范围:

测试 关闭 开启
AES256 4237.6–4256.1 4221.7–4249.8
LZW 455.5–459.4 453.3–463.0
内存 33828.2–33955.2 34033.8–34347.0

开关差异都落在轮次波动内。诚实的结论是:

在这台 VM 的这三项合成负载里,没有检测到可重复的 CPU 或内存带宽代价。这不证明 HVCI 在游戏、驱动或开机路径上免费。

不要只看一轮,也不要跨电源模式、显卡驱动或后台负载比较。

终端(管理员)
终端窗口
winsat cpu -encryption -xml $env:TEMP\enc-off.xml
winsat cpu -compression -xml $env:TEMP\comp-off.xml
winsat mem -xml $env:TEMP\mem-off.xml

重复 3 次。winsat 需要交互式桌面会话;以 SYSTEM 运行且没有 DWM 时会退出 24。

预期结果: 三次非零 XML 结果,记录中位数。

终端(管理员)
终端窗口
winsat cpu -encryption -xml $env:TEMP\enc-on.xml
winsat cpu -compression -xml $env:TEMP\comp-on.xml
winsat mem -xml $env:TEMP\mem-on.xml

预期结果: SecurityServicesRunning 包含 2;三项测试生成新的 XML。

真实游戏要测帧时间和 1% low,不要只看平均 FPS;一次只改一个变量。1–2% 的合成差异通常是噪声;同一场景可重复的 10% 下降才值得查。

建议保留内存完整性,如果:

  • 这台机器用于网银、工作、开发,或任何在意内核级恶意代码的场景;
  • 你的驱动和反作弊都能在开启状态下工作;
  • 你没有在实际负载里测到可重复的退化。

只有这些情况才考虑关闭:

  • Windows 安全中心明确点名某个不兼容驱动,且没有更新;
  • 必需的反作弊、虚拟机、采集卡或硬件工具在 HVCI 开启时失败;
  • 你在实际使用的负载里有可重复的前后对比退化,而不是一次合成分数;
  • 这是实验/测试 VM,安全取舍可接受。

关闭后要记录原因,并在驱动/厂商修复后重新打开。“FPS 高了”但没有受控测量,不是关闭内核安全边界的理由。

现象 常见原因 先做什么
开关灰色 / “由管理员管理” 组策略、Intune 或注册表策略 gpresult /h 查策略;问管理员;不要绕过管理
VBS 显示运行,但 HVCI 不在 SecurityServicesRunning HVCI 场景 Enabled 缺失/为 0,或没重启完 写 HVCI 策略、重启,再确认 {2}
内存完整性打不开 Secure Boot/TPM/虚拟化不满足,或驱动阻止 查固件、Confirm-SecureBootUEFI、Get-Tpm;看安全中心的驱动列表
开启后开机蓝屏/循环 驱动或固件不兼容 进安全模式/回滚快照;不要反复强开
提示“内存完整性已关闭”并列出驱动 Windows 发现不兼容驱动 先更新/移除该驱动;关闭 HVCI 是最后手段
WSL2/Hyper-V 不工作 通常与 HVCI 无关;查 Virtual Machine Platform 和嵌套虚拟化 重查 wsl --status;VM 里要把虚拟化暴露给 guest
感觉变慢 心理预期、后台负载、显卡驱动,或真实退化 同一负载重复 3 次;比帧时间,不比单次 FPS
结论 证据
HVCI 关闭 → 开启,SecurityServicesRunning 从 {0} 变 {2} E2,VM 361 的 DeviceGuard
CPU AES256、LZW、内存带宽的中位数 E2,各 3 轮,XML 指标
这三项合成负载没有可重复退化 E2,差异在轮次范围内
Windows 安全中心显示内存完整性为开 E2,截图
HVCI 开启时 WSL2/Ubuntu 仍能启动 E2,whoami=dev、内核 6.18;有嵌套 VM 警告
游戏 FPS/帧时间、开机时间、驱动兼容矩阵、电池 未测试
HVCI 能提升性能 不声称;小的正差异是噪声

来源