【程序思维】解决Windows 11由VBS引起的游戏卡顿掉帧(Virtualization-based Security Disabled)解决Intel XTU无法启动 原创

0.初见问题:自从更新24H2,游戏老是莫名其妙卡一下

最近在玩Fortnite,游戏中老是莫名奇妙的掉帧,真的是那种特别莫名奇妙的突然卡一下,并且每次遇到很重要的赛点的时候,老是打不中敌人!逐步分析原因,这个问题是从我的笔记本更新了Windows 11 的24H2过后开始的,24H2的一些特性肯定有不少的坑!下面是我怎么逐步解决这个问题的:

在文章的开始想说,缘由是我看了这个视频,所以才找到了解决方案和写出了文章的一些内容,在此特别感谢视频作者!但我想文字来描述我解决问题的心路历程和造成这个问题的原因。

1.分析游戏:游戏时CPU的温度和频率特别高,但是占用却不高

(忘记截图了)在游戏过程中,用监视器软件对笔记本性能进行监控,发现游戏时候,CPU的占用达不到40%,但是CPU的频率却达到了4.1Ghz,并且温度和电压都处于极端的数值。

笔记本的在没有装24H2之前,记忆中游戏中CPU的温度和频率,不会达到这样不对劲的数字,肯定有什么家伙在我游戏运行的时候偷偷运行影响笔记本性能!

众所周知,我们的CPU频率通常是主频乘以倍频组成,大多数情况下主频是不变的那个,而倍频往往是可以进行超频的。以i7 11800H为例,他的45W TDP下的基准频率是2.30 GHz,可以理解为主频是0.1Ghz,倍频是23,这个是他的基准频率(Base Frequency),但是实际上如果真的要是按照这个性能出厂,那岂不得被暴骂一顿。而我们的用户大多数时候用到的其实是它睿频提高频率后的性能,这其中所谓睿频其实也就是处理器自动调整频率,可以频率往调省电节能,也可以频率往处调才是他的真实性能的超频频率(Turbo Clock)

有人说这个超频频率也有水分,比如有的出厂芯片就不行的,会把预期值最高频率调低一点,有些好一点也会把期值最高频率调高一点。(听说的)

这里有这个CPU的数据,摘录其中的表格,可以发现:CPU的超频频率(Turbo Clock)和全核超频频率(All-Core Turbo)

Turbo Clock:up to 4.6 GHz
All-Core Turbo:up to 4.2 GHz
可以理解为,我只开启一个核心的时候,纸面数据频率可以达到4.6 Ghz,但是如果这个CPU的八个核心全部开启,只能降低到了4.2 Ghz运行!!

为什么是纸面数据,因为这个数值一般默认笔记本厂家的调教下,其实也是达不到的。我认为和很多因素有关系,温度(短时间变化数值),能够提供的功率,厂家的电源设计、甚至是CPU内部的计数器?

事实上我的这个CPU现在正常情况下只运行一个核心时候,单核允许4.4 Ghz(小于15秒),但是当全核运行,一般是优化好的游戏状态下,全核到顶最高3.8 Ghz左右(小于15秒) 。

以我最近玩的堡垒之夜Fortnite为例,一把游戏平均频率甚至还达不到3.5 Ghz,而上面提到的更新系统后CPU的频率却达到了4.1Ghz,并且通过温度和电压以及功率可以发现CPU其实处于比较高负载的模式,这个游戏在我更新前都不是这样。所以我判断肯定有什么程序或者是脚本在我运行游戏的时候偷偷的影响着我的笔记本性能!

2.软件异常:想要直接锁CPU电压,速下Intel XTU,发现打不开

最开始没有想到解决的思路,发现打游戏的时候CPU的功率直接来到了比较高的电压和功率,想到了以前用过Intel XTU来设置CPU的功耗墙来限制性能,于是乎迅速下载,打开后的一个提示让我浮想联翩:

Intel XTU with Virtualization-based Security Disabled (VBS)

简单翻译一下就是因为系统开启了Windows VBS (Virtualization-based Security),因为打开了这个东西,导致Intel 的XTU无法使用。

所以说什么是VBS,最开始没有接触24H2刚出来时听群友谈起,我还以为是Windows的那个后缀为.vbs的脚本,这个提示窗口才让我恍然大悟。

VBS (Virtualization-based Security)根据微软的解释是:基于虚拟化的安全功能(VBS),它使用硬件虚拟化和 Windows 虚拟机来监控程序创建独立的虚拟环境,使该环境将成为假定内核遭到入侵的 OS 的信任根。

说白了就是一种安全程序嘛,正所谓顾此失彼,当你专注于一方面时,另一方面就会受到忽略,难以兼顾两者。如果两个东西都必须同时具备,结果可能会导致更大的损失。

总结:这次我想打游戏,但是我运行游戏程序的时候,这个叫VBS的安全程序并不能有效的兼容我的游戏,造成我的游戏不正常的卡顿和掉帧,但是我现在只想打游戏,那我只有把这个安装程序给杀掉了。(或者换更强大的电脑来减小掉两者之间的影响,通解)

3.大海捞针:寻找如何关闭VBS

我建议关闭了该功能的电脑不要存放重要或有价值的数据,毕竟现在一些高级的病毒还得靠这样的虚拟化安全程序才能把漏洞补上才进不来,当然,如果你连UAC都关闭了,貌似这个警告也不重要了。

互联网上充斥着大量的24H2以前的方法,比如修改注册表、使用命令行直接off,或者关闭Windows安装中心的内核隔离的内存完整性等等,但是本人亲自测试以上方法均无效,关闭了过后肯定是要重启的,重启之后再打开XTU是打不开的。

1.最快速的方法:某企业为他们自己家的笔记本如何关闭这个功能写了详细的脚本,如果有需要可以直接下载运行:https://consumer.huawei.com/cn/support/content/zh-cn16012808/

Windows其实提供了脚本来关闭这个烦人的安全程序:

2.可以直接运行一个写好的Powershell脚本

内容来源自(2/3):Configure Credential Guard | Microsoft LearnDisable Credential Guard with UEFI lock部分。

  ./DG_Readiness_Tool_v3.6 -Disable  

如果无权限

Powershell.exe -executionpolicy remotesigned -File   ./DG_Readiness_Tool_v3.6 -Disable  

.ps1脚本链接在这里Download Device Guard and Credential Guard hardware readiness tool from Official Microsoft Download Center

3. 或者直接运行下面的脚本,创建一个后缀为.cmd的文件,将文件里面填写下面的内容,然后以管理员模式运行

mountvol X: /s  
copy %WINDIR%\System32\SecConfig.efi X:\EFI\Microsoft\Boot\SecConfig.efi /Y  
bcdedit /create {0cb3b571-2f2e-4343-a879-d86a476d7215} /d "DebugTool" /application osloader  
bcdedit /set {0cb3b571-2f2e-4343-a879-d86a476d7215} path "\EFI\Microsoft\Boot\SecConfig.efi"  
bcdedit /set {bootmgr} bootsequence {0cb3b571-2f2e-4343-a879-d86a476d7215}  
bcdedit /set {0cb3b571-2f2e-4343-a879-d86a476d7215} loadoptions DISABLE-LSA-ISO  
bcdedit /set {0cb3b571-2f2e-4343-a879-d86a476d7215} device partition=X:  
mountvol X: /d  

至于说关闭了有什么影响吗,如果你是用那个快捷脚本关闭的,Hyper-V的相关功能就用不了了,包括WSL,WSA、docker等等,包括一些虚拟化的功能也会受到限制。但是有些莫名奇妙的软件和莫名其妙的设置配合,有些人关闭了这个VBS以上的功能也可以使用,这里就不再深究呢。

最近写的文章的数量太少了,自己的网站内容压根活跃不起来,努努力多更新一些!