windows 10可通过启用hvci与强制代码完整性策略实现仅运行微软签名程序:①管理员powershell执行set-processmitigation禁用非微软二进制;②开启核心隔离内存完整性或注册表启用vbs;③禁用非microsoft启动项与服务;④重启后通过事件查看器及win32_deviceguard验证拦截生效。

Windows 10 默认允许运行未签名的可执行文件,但某些高安全场景(如金融终端、审计工作站或开发沙箱)要求系统启动后仅加载经微软数字签名验证的程序,彻底阻断任何未签名EXE/DLL的执行——这并非标准“干净启动”,而是启用内核级代码完整性策略,需通过设备防护中的“基于虚拟化的安全性”与“强制驱动程序签名”双重锁定实现。
启用内核模式代码完整性(核心步骤)
① 右键【开始】按钮 → 选择【Windows PowerShell(管理员)】或【终端(管理员)】。
② 执行命令:Set-ProcessMitigation -System -Enable StrictHandleCheck,ForceRelocateImages,DisableNonMicrosoftBinaries —— 此命令强制系统拒绝加载所有非 Microsoft 签名的二进制模块,【执行前请确保已安装全部 Windows 更新,否则可能触发蓝屏】。
③ 输入 bcdedit /set {current} testsigning off 关闭测试模式(若之前开启过),避免签名绕过机制干扰。
④ 输入 shutdown /r /t 0 立即重启,使策略生效。
开启设备防护中的“基于虚拟化的安全性”(VBS)
方法一:图形界面启用
1、按 Win + I 打开【设置】→【更新和安全】→【Windows 安全中心】→【设备安全性】。
2、点击【核心隔离】→ 开启【内存完整性】开关。
3、系统提示需要重启时,立即确认——此操作将启用 HVCI(Hypervisor-protected Code Integrity),在硬件虚拟化层拦截未签名代码加载。
方法二:PowerShell 强制启用(绕过 UI 限制)
1、仍以管理员身份运行 PowerShell。
2、输入命令:Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\DeviceGuard\Scenarios\HypervisorEnforcedCodeIntegrity" -Name "Enabled" -Value 1 -Type DWord。
3、执行 shutdown /r /t 0 重启。重启后可在【核心隔离】页面看到状态变为“正在运行”。
禁用所有非 Microsoft 启动项与服务(纯净环境基础)
1、Win + R 输入 msconfig → 回车。
2、“常规”选项卡中选择【有选择的启动】→ 取消勾选【加载启动项】。
3、“服务”选项卡中勾选【隐藏所有 Microsoft 服务】→ 点击【全部禁用】。
4、切换到“启动”选项卡 → 点击【打开任务管理器】→ 在“启动”页中,对每个【状态】为“已启用”的条目右键【禁用】。
5、返回系统配置窗口 → 点击【确定】→ 选择【重新启动】。
注意:这一步必须在启用 VBS 后执行,否则部分安全策略无法加载,【若跳过此步,未签名程序仍可能通过启动项绕过代码完整性检查】。
验证未签名程序是否被真正拦截
1、下载一个已知未签名的测试 EXE(例如某开源工具的便携版)。
2、双击运行,系统应直接弹出错误提示:“此应用无法在你的电脑上运行”或“Windows 已阻止此软件,因为它未经验证”。
3、打开事件查看器 → Windows 日志 → 系统 → 筛选事件 ID 为 16(Code Integrity)的记录,确认出现“阻止加载未签名映像”字样。
4、运行命令 Get-CimInstance -ClassName Win32_DeviceGuard -Namespace root\Microsoft\Windows\DeviceGuard,检查输出中 HVCIStatus 值为 1 且 RequiredSecurityProperties 包含 2(代表代码完整性已启用)。











