Windows 8下的Microsoft SmartScreen Filter是小型开发者的噩梦。
虽然我知道它对终端用户有益,而且对于防止恶意程序安装在终端用户的计算机上也很有效,但我和很多其他开发者更不愿意支付年度更新代码签名证书或者更糟糕的EV代码签名证书的费用。此外,当为内部使用开发的产品使用信任的CA中的受信任证书进行签名并存储在Trusted Publishers存储区时,它们仍会成为过滤器过分行为的牺牲品。
以前,开发人员和管理员可以通过将发布者的代码签名证书安装在Trusted Publishers存储区中来禁用警告和提示。创造性的开发人员可以在使用付费Authenticode代码签名证书签名和时间戳预备条件时,将自签名代码签名证书安装在那里。之后,由发布者签名的程序将受到信任,并且不会触发SmartScreen Filter警报。基本上,一旦被信任,发布者就可以免除经常性的费用。
最近对SmartScreen Filter的更改(以及将其包含在Windows 8操作系统中作为“功能”)表明,Microsoft希望您购买代码签名证书,而不是创造性地解决他们为您创建的问题。有人发现了一种新方法来默认信任使用自签名代码签名证书的发布者吗(即不显示提示)?除了完全关闭过滤器之外,终端用户可以采取什么措施让SmartScreen Filter始终信任自签名证书?
请注意,购买代码签名证书不是这个问题的答案。我正在寻找一种方法告诉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 \ CurrentVersion \ Internet 设置\区域\ 2!2301设置为0,以及按照此问题所示添加要信任的站点到信任站点区域来实现为信任站点区域关闭SmartScreen过滤器。
有人能否验证我的建议解决方法是否适用于在受信任站点中下载未签名或自签名的可执行文件在Windows 8上运行?我自己没有使用Windows 8,因为我的操作系统升级预算已花费在证书费用上。