Windows 8 下的 Microsoft SmartScreen Filter 是小型开发人员最糟糕的噩梦。
虽然我意识到对最终用户的好处以及阻止恶意程序在最终用户的计算机上自行安装的有效性,但我和许多其他开发人员宁愿不支付每年更新代码签名证书的费用,或者更糟糕的是,EV代码签名证书。此外,当为内部使用而开发的产品使用来自内部 CA 的可信证书进行签名并存储在 Trusted Publishers 存储中时,它们仍然会成为过滤器过度热心行为的牺牲品。
开发人员和管理员过去可以通过在受信任的发布者商店中安装发布者的代码签名证书来禁用警告和提示。创意开发人员可以在安装使用付费 Authenticode 代码签名证书签名和时间戳的先决条件时在那里安装他们的自签名代码签名证书。之后,由发布者签名的程序将被信任,并且不会触发 SmartScreen 过滤器警报。从本质上讲,一旦受到信任,出版商就无需支付经常性费用。
最近对 SmartScreen 筛选器的更改(并将其作为 Windows 8 中的操作系统“功能”包含在内)清楚地表明,Microsoft 希望您购买代码签名证书,而不是创造性地解决他们为您创建的问题。是否有人发现了一种新方法来信任默认使用自签名代码签名证书的发布者(即不显示提示)?如果没有完全关闭过滤器,最终用户可以做些什么来让 SmartScreen 过滤器知道始终信任自签名证书?
请注意,购买代码签名证书并不能回答这个问题。我正在寻找一种方法来告诉 SmartScreen Filter 信任不从外部来源购买证书的发布者,而是发布自己的证书以供其组织内部使用。
更新:我想我可能已经找到了解决方法! 从MSDN中,可以在 Windows 8 和 Internet Explorer 10 上为列为受信任站点的站点禁用 SmartScreen 筛选器。如果有人可以验证此方法适用于从 Windows 8 中的受信任站点下载和运行的安装程序,那将不胜感激,并将帮助许多 ISV 和内部开发团队。这也是回答这个问题所需的解决方法。受信任的站点可以通过组策略进行配置,因此从那里开始很简单。
以编程方式,可以通过为机器设置 HKLM\Software\Policies\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\2!2301 或 HKCU\Software\Policies\Microsoft\Windows 来关闭受信任站点区域的 SmartScreen 过滤器\CurrentVersion\Internet Settings\Zones\2!2301 将用户设置为 0,并将要信任的站点添加到 Trusted Sites Zone 可以如本问题所示完成。
有人可以验证我建议的解决方法在 Windows 8 上是否适用于从受信任站点下载的未签名或自签名可执行文件?我自己并没有使用 Windows 8,而是将操作系统升级预算用于证书费用。