

前言介绍
启用UWF
RAM模式
Disk模式
注意事项
实际应用


1. 前言介绍

警告:UWF有风险,使用须谨慎!
个人目前系统版本:Windows 11 21H2 build-10.0.22000.795
下文中,“启用/禁用UWF”将指代 [控制面板>程序>启用或关闭Windows功能] ,与“打开/关闭UWF”有所区别,不再赘述
官方介绍:统一写入筛选器 (UWF) 是一个可选的 Windows 10、11 功能,它通过拦截驱动器的所有写入(应用安装、设置更改、保存的数据)并将其重定向到虚拟覆盖层来帮助保护驱动器。 虚拟覆盖是一个临时位置,通常在重新启动期间或来宾用户注销时清除。(来自微软文档:https://docs.microsoft.com/zh-cn/windows-hardware/customize/enterprise/unified-write-filter)
通俗释义:UWF相当于给受保护的卷包裹了一张透明薄膜(薄膜有两种:RAM与Disk),任何文件操作只会发生在薄膜上,重新启动计算机时,撕去脏污的薄膜,重新启动计算机后,贴上一张全新的薄膜。即当打开UWF时,文件系统为Alpha状态,之后无论经过何种文件操作(包括但不限于新建、删除、重命名、更改属性),重新启动计算机后,文件系统都会恢复为Alpha状态,若UWF保护的卷中包含C盘系统盘,则对系统设置、注册表等修改也将被恢复为Alpha状态。UWF类似于系统还原,不过更为彻底,任何文件更改在重启后都不会保留(C盘除外,因其特殊地位,恢复率99%)
优点:RAM模式下文件写入内存,不占用SSD写入量;RAM模式下的受保护卷4K读写与延迟极为出色,适合用于缓存空间;若选择保护C盘,可用于试验某些危险度较低、未触及到系统深层的行为,如安装流氓软件,浅层的注册表、组策略、控制面板修改
缺点:UWF虽然发展时间不算短(前身为Windows7中的EWF),依然不是很成熟,Bug较多,故仅作为可选功能提供。某些恶性Bug甚至会导致无法拯救的蓝屏,第五节详述


2. 启用UWF

前提条件:Windows 10或11 企业版、教育版、IoT 核心版,推荐1803以后的版本,专业版可通过更换密钥并重新激活升级到企业版,家庭版同理可升专业版,不便详述
建议项:最常用的RAM模式会将文件写入内存,故内存需够大,推荐至少16GB;另外推荐先在控制面板中关闭快速启动,并执行CMD(管理员)命令:
POWERCFG /HIBERNATE OFF 首次启用并打开UWF后:以下功能将被禁用------【分页文件】(即虚拟内存,后续可在非保护卷上重新开启,即使重启后在非保护卷上依然保有分页文件)【系统还原】【SuperFetch】(亦名SysMain)【文件索引服务】【快速启动】【碎片整理服务】(磁盘管理中的扩展卷和压缩卷也将无法使用,如有需求,Powershell(管理员)通过以下命令重新启用:
Set-Service defragsvc -StartupType Manual; Start-Service defragsvc 启用UWF:[控制面板>程序>启用或关闭Windows功能],勾选统一写入筛选器,等待部署完成后重新启动计算机

P1
重启后以管理员模式进入CMD或Powershell,键入uwfmgr回车,出现以下页面即表明UWF功能已成功启用

P2
打开UWF之前需先配置UWF。获取配置信息:
uwfmgr.exe get-config UWF保护的对象为一个或多个卷,不能仅保护个别文件或文件夹,但可以排除个别文件或文件夹。设定受保护的卷或取消保护:
uwfmgr.exe volume protect D:
uwfmgr.exe volume unprotect C: 系统深层的文件或文件夹请勿列为排除项,详见微软官方文档。排除受保护区内特定文件或文件夹:
uwfmgr.exe file add-exclusion D:\folder-1\new.txt UWF覆盖方式分为RAM模式和Disk模式,配置方式下文详述。配置完成后,建议重新启动计算机以避免可能出现的Bug。重启后,打开或关闭UWF(再次重启以生效):
uwfmgr.exe filter enable
uwfmgr.exe filter disable


3. RAM模式

RAM模式下(此为UWF 预设模式),对受保护区的文件写入将重定向到内存中,完全删除此文件将释放内存空间(扔进回收站不释放空间,毕竟删除 D:\new.txt 只是将其移动到 D:\$RECYCLE.BIN\ 中,文件的逻辑路径依然在D盘中)。RAM覆盖大小默认为1024MB,此1024MB内存空间并没有被UWF锁定,其他程序亦可使用,1024MB代表的是其阈值(例如:主机物理内存4GB,设定的RAM覆盖大小为1GB,此时虚拟内存已被UWF禁用,实际可用内存空间4GB,若受保护区一直没写入文件,则覆盖大小为零,这样的话,内存占用达到3.9GB也没事,不过再启动程序可能会爆内存,报错,卡死,无响应等等);而如果写入覆盖区的文件大小超过1024MB阈值,系统将会完全黑屏无响应,只能按关机按钮重启。无论是大型软件或多开造成的爆内存还是UWF覆盖区满溢,都会给人带来难受的体验。所以,把握好内存用量这个度很关键,对于要开启的下一个软件或写入覆盖区的文件会不会挤爆剩余内存空间,心里要有点B数。当然,也不必因此对UWF敬而远之,翻两三次车就能习得经验。我这几年使用下来,它如今依然是我的趁手工具,UWF是个好东西,但也有点危险,就像河豚一样,美味而又剧毒。自然,在UWF水池满溢之前,会有警告通知和严重警告。设定RAM覆盖大小、严重警告大小和警告大小:
uwfmgr.exe overlay set-size 8192
uwfmgr.exe overlay set-criticalthreshold 7000
uwfmgr.exe overlay set-warningthreshold 6000 获取UWF覆盖区剩余可用空间,显示覆盖区已用空间(Disk模式下不适用):
uwfmgr.exe overlay get-availablespace
uwfmgr.exe overlay get-consumption RAM模式下的受保护区有着出色的4K读写性能和极低的延迟,非常适合用作缓存区

P3


4. Disk模式

Disk模式与RAM模式类似,只是覆盖区介质变成了硬盘。切换为Disk模式(切换之前需关闭UWF并重启计算机):
uwfmgr.exe overlay set-type Disk 优点(相较于RAM模式):默认开启可用空间直通(uwfmgr overlay set-passthrough on),不受覆盖区大小阈值(默认1024MB)的限制,实际可用空间等于卷的剩余空间;其额外功能 “持久覆盖” 打开后,下次重启计算机将会保留此次的覆盖区文件修改(可通过 “重置持久覆盖” 功能或关闭UWF并重启来重置覆盖区),适合某些安装之后需要重启才能生效的驱动或软件。打开或关闭持久覆盖以及重置持久覆盖( “持久覆盖” 为实验性功能,请谨慎使用!):
uwfmgr.exe overlay set-persistent on
uwfmgr.exe overlay set-persistent off
uwfmgr.exe overlay reset-persistentstate on 缺点(相较于RAM模式):覆盖区介质为磁盘,故并不能像RAM模式那样减少SSD磨损; Disk模式更加不稳定,更容易出现Bug,我的三次无法拯救的蓝屏都与此模式有关联


5. 注意事项

要有随时舍弃整个C盘文件的觉悟,重要资料不放C盘,随时备份,手头要有Windows系统安装U盘、WinPE等可以从外部启动计算机的工具。以下是我的三次无法拯救的蓝屏经历:第一次------在未关闭UWF并重启计算机的情况下,从RAM模式切换到DIsk模式并修改了配置,重启后陷入“蓝屏+重启死循环”;第二次------在未关闭UWF(Disk模式+受保护卷包括C盘)并重启计算机的情况下,在 [控制面板>程序>启用或关闭Windows功能] 中禁用了UWF,重启后陷入“蓝屏+重启死循环”;第三次------Disk模式+受保护卷包括C盘+打开持久覆盖,为了试验XTU,前几次重启都没问题,最后一次陷入“蓝屏+重启死循环”------这三次蓝屏都无法通过强制关机3次进入WinRE恢复分区来拯救计算机,万幸手头有个Windows系统安装U盘。以上翻车皆发生在我使用UWF生涯的中期,还是不够稳重啊,从此以后我就一直使用RAM模式了,保护的也不是系统盘,除非特殊情况,否则不保护C盘,也少碰Disk模式,更是对 “持久覆盖” 小心翼翼。庄子有云:“谨慎能捕千秋蝉,小心使得万年船”。好在,之后没再蓝屏,爆内存也仅约莫半年能碰到一次。
UWF内置的重置配置命令是无效的,执行后的结果是“找不到相关文件”,另外 [关闭UWF并重启>禁用UWF>重启>启用UWF>重启>打开UWF] 此操作的结果依然是“找不到相关文件”。正确的重置UWF流程是:[关闭UWF并重启>禁用UWF>重启>启用UWF>重启>禁用UWF>重启>启用UWF>重启>配置UWF>重启>打开UWF>重启>最终步入正轨],看起来及其繁琐,都是被巨硬的奇妙Bug给逼得。以下为无效的重置配置命令,请勿执行:
uwfmgr.exe filter reset-settings 某些行为可能会导致UWF看似正常运行,实则已失效。以下为可能的病因:安装在VHD(X)里的Windows系统、RAM模式与Disk模式来回切换、添加或删除受保护的卷,不一而足。UWF失效的症状表现为:往受保护卷写入一定大小的文件后执行 uwfmgr.exe overlay get-consumption 的返回值为零,RAM模式自不必多说,此命令虽不适用于Disk模式,返回值也不可能是零,通常是几十MB。所以,敏感操作后请用 uwfmgr.exe overlay get-consumption 验证UWF已正常运行,若返回值确已为零,则参考上文中 UWF重置流程。
UWF的警告通知和严重警告通知可能不会正常弹出,发生在旧版本的Windows上,也可能与我以前使用的企业版Windows10是从专业版升上来的有关。不过,目前最新版Windows11已可正常弹出,最新版Windows10应该也没问题,毕竟两者换汤不换药。
UWF覆盖区满溢的风险问题,可通过“紧箍咒”约束之,第六节详述。由于大型软件或多开造成的爆内存问题,其实问题不是很大,成熟的软件都会提示内存不足,或者闪退,很少出现系统卡死无响应什么都做不了的情况,大多数情况下至少能保存工作进度后再重启。至于UWF默认禁用的虚拟内存,会不会引起部分程序无法工作?反正我这几年各种软件、游戏使用下来,只碰到一次:Photoshop,我想修个不大的图片,剩余大概8GB内存,没开虚拟内存,我猜应该够它用了,打开PS之后没操作几步,闪退,有一说一8GB确实有点瞧不起Adobe家了,然后开了虚拟内存(在非保护卷上),修图修到最后几步的时候,终于还是闪退了。。。当然这可能跟我用的是贫民版PS有关。
关于如何把控内存的使用量。首先,生产力软件、近几年的大型3A游戏,16GB物理内存基本上是不够用的,老老实实虚拟内存开起来(32GB只需考虑大型生产力软件,64GB及以上仅特殊行业不够用),若在非保护卷上开了虚拟内存,软件依然闪退,请考虑关闭UWF并重启。大个子软件会吃掉多少内存,心里要有点B数,可通过任务管理器 内存占用 变换量和 已提交 变换量判断,通常 已提交 值更大,更值得关注,如图:

P4. 注意控制红圈中的值小于物理内存
若主机只有一块机械硬盘,UWF(RAM模式)对系统速度的提升不大,因为机械硬盘羸弱的4K读取是木桶上的短板。
若你将C盘列为了受保护卷,请谨慎行事,勿系统更新、勿动深层级别的系统文件和注册表、勿XTU、勿BIOS。优先RAM模式,其次Disk模式,最后考虑 “持久覆盖”,留好后路。
若要修改UWF配置,稳妥起见,关闭UWF并重启后再修改,再次打开UWF并重启后,请验证UWF是否确实正常运行
UWF覆盖区大小阈值请根据自己物理内存大小和需求设定,通常为物理内存的一半
UWF无法阻挡病毒,详见网友的测试:BV1js411L7mf


6. 实际应用

本节主要分享我应用UWF的经验和方式。经过长时间的折腾以后,目前稳定下来的方案是:RAM模式+独立分区。主要目的是:减少SSD磨损+捣鼓各种小玩意的独立操作台。
方案具体如下:在磁盘管理中扩展出一个NTFS格式的卷,大小8192MB,卷命名为 “UWF特区” ,设定UWF仅保护此卷,我给予UWF的覆盖区大小阈值也是8192MB,而NTFS文件系统的缘故,“UWF特区”卷的实际可用空间会小于8192MB(“紧箍咒”)。所以,UWF永远达不到满溢临界值,避免了不小心满溢导致的完全黑屏。只选择保护“UWF特区”也可以最大程度避免因忘记转移保存重要文件而导致重启后丢失数据的后果,“UWF特区”的文件树路径将尽可能简单,我个人生成的文件将尽可能放在根目录中,这样,重启计算机之前,我只需瞧一眼“UWF特区”即可。
看我前两篇文章也知道我喜欢捣鼓FFmpeg,“UWF特区”基本就是我的操作台,反正素材文件和生成的文件都是临时且随时可弃的,有时要生成几千张帧图片,RAM模式的4K及延迟优势就体现出来了。
通过 mklink 命令创建目录符号链接,将对其他分区某一文件夹的写入重定向到“UWF特区”中的指定文件夹,适合原位于C盘中的一些缓存文件夹,执行 mklink 命令前,需删除原文件夹,并在“UWF特区”中新建用于重定向的指定文件夹,命令示例(CMD管理员):
mklink /D "%LOCALAPPDATA%\Temp" "D:\UWF-Temp"
mklink /D "%LOCALAPPDATA%\Microsoft\Edge\User Data\Default\Cache" "D:\UWF-EdgeCache" 如果我想测试某个不熟悉的软件或看起来不安全的程序,我会优先选择在 Windows Sandbox 中隔离试验