微软每隔一个星期二就会为 Windows 发布 "补丁星期二" 更新。这些更新会引入安全修复,有时也会出现错误。虽然我们不确定这是一个错误还是有意为之,但在二月和三月的最近两次更新中,微软似乎开始通过系统注册表阻止默认应用程序的切换。
Christoph Kolbicz 是一名 IT 顾问,他首先注意到了这个问题。用户发现 Kolbicz 的 SetUserFTA 和 SetDefaultBrowser 不再工作,这引起了他的注意。
SetUserFTA 和 SetDefaultBrowser 是允许 IT 和系统管理员轻松设置默认 Windows 文件类型关联 (FTA) 的命令行实用程序。
通过进一步研究,Kolbicz 了解到,微软推出的新过滤驱动程序 UCPD.sys(User Choice Protection Driver 的缩写)是造成阻塞的原因,因为它们阻止了对 UserChoce 注册表键值的写入。
如果你想知道,微软在 Windows 8 中引入了 "UserChoice" 注册表键值哈希值,以提高操作系统的安全性。特定的哈希值用于证明 UserChoice ProgId 值是由用户自己设置的,而不是通过恶意手段设置的。
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\Shell\Associations\UrlAssociations\http\UserChoice
Kolbicz 在博文中解释说:
从二月份开始,很多人在我的博客上报告说,使用 SetUserFTA 和 SetDefaultBrowser 设置 http 和 https 协议的功能对他们不起作用了,也就是说,使用我的工具无法更改默认浏览器了。
我编译了一个调试版本,以便从受影响的用户/机器那里获得更多信息,令我惊讶的是,写入相应注册表键值会返回 ACCESS_DENIED,而且也无法再用 regedit、reg.exe 或 PowerShell 编辑这些键值。
...
使用 Windows 中的 "设置" 应用程序更改默认浏览器仍然有效,但使用脚本或工具修改这些键似乎受到了某种限制。
IT 学者 Gunnar Haslinger 在调查中发现,新的 UCPD 驱动程序会过滤以下注册表键值:
- Software\Microsoft\Windows\Shell\Associations\UrlAssociations\http\UserChoice
- Software\Microsoft\Windows\Shell\Associations\UrlAssociations\http\UserChoiceLatest
- Software\Microsoft\Windows\Shell\Associations\UrlAssociations\http\UserChoicePrevious
- Software\Microsoft\Windows\Shell\Associations\UrlAssociations\https\UserChoice
- Software\Microsoft\Windows\Shell\Associations\UrlAssociations\https\UserChoiceLatest
- Software\Microsoft\Windows\Shell\Associations\UrlAssociations\https\UserChoicePrevious
- Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.pdf\UserChoice
- Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.pdf\UserChoiceLatest
- Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.pdf\UserChoicePrevious
据推测,这是 Windows 正在进行的欧盟 DMA 合规性变更的结果。有关 UCPD 驱动程序的更多技术细节,请访问下面的源链接。
来源:Christoph Kolbicz via Gunnar Haslinger