微软在Windows 8下的SmartScreen Filter是一个小型开发者最糟糕的噩梦。
虽然我意识到最终用户的好处以及阻止恶意程序在最终用户的计算机上安装的有效性,但我和许多其他开发人员宁愿不支付每年续订代码签名证书的费用,或者更糟糕的是,EV代码签名证书。此外,当开发用于内部使用的产品使用来自内部CA的可信证书进行签名(存储在受信任的发布商店中)时,它们仍然会成为过滤器过度热心行为的牺牲品。
开发人员和管理员曾经可以通过在Trusted Publishers商店中安装发布商的代码签名证书来禁用警告和提示。创意开发人员可以在安装必要的签名时加安装自签名代码签名证书,并使用付费的Authenticode代码签名证书加盖时间戳。之后,发布者签署的程序将受到信任,并且不会触发SmartScreen筛选器警报。基本上,一旦信任,出版商就可以免除经常性费用。
最近对SmartScreen筛选器的更改(以及在Windows 8中将其作为操作系统“功能”包含在内)清楚地表明Microsoft希望您购买代码签名证书,而不是创造性地解决他们为您创建的问题。是否有人发现了一种新方法来信任默认使用自签名代码签名证书的发布者(即不显示提示)?如果没有完全关闭过滤器,最终用户可以做什么让SmartScreen过滤器始终信任自签名证书?
请注意,购买代码签名证书不是此问题的答案。我正在寻找一种方法来告诉SmartScreen筛选器信任不从外部源购买证书的发布者,而是发布自己的内容以供其组织内部使用。
更新:我想我可能找到了解决方法!来自MSDN,可以在Windows 8和Internet Explorer 10上为列为可信站点的站点禁用SmartScreen筛选器。如果有人可以验证此方法适用于从Windows 8中的可信站点下载和运行的安装程序,那将非常感谢并且可以帮助许多ISV和内部开发团队。这也是回答这个问题所需的解决方法。可以通过组策略配置可信站点,因此从那里可以很简单。
以编程方式,可以通过为计算机设置HKLM \ Software \ Policies \ Microsoft \ Windows \ CurrentVersion \ Internet Settings \ Zones \ 2!2301或HKCU \ Software \ Policies \来关闭可信站点区域的SmartScreen筛选器用户的Microsoft \ Windows \ CurrentVersion \ Internet Settings \ Zones \ 2!2301为0,并且可以按照this question所示将要信任的站点添加到可信站点区域。
有人可以在Windows 8上验证我建议的解决方法是否可以从可信站点下载未签名或自签名的可执行文件?我自己的操作系统升级预算用于证书费用,我自己并没有使用Windows 8。
答案 0 :(得分:23)
批评者可能声称SmartScreen“迫使”开发人员花费 证书上的钱。应该强调EV代码签名 证书不需要建立或维护声誉 智能屏幕。使用标准代码签名证书和签名的文件 即使是未签名的文件也会继续建立声誉 应用声誉去年在IE9中引入。然而 存在EV代码签名证书是一个强有力的指标 该文件由经过严格验证的实体签署 过程并与硬件签署,允许我们的系统 比未签名或更快地建立该实体的声誉 非EV代码签署的程序。
换句话说,EV(付费)验证只是确定是否显示SmartScreen警告的大型算法中的一个因素。如果您有很多人下载您的程序,或者您的程序下载链接暂时没有更改,通过一些工作,您可以使您的程序不显示警告。此外,通过对代码进行数字签名,您可以提高应用程序的声誉。这是直接来自Microsoft's webpage on the topic。
答案 1 :(得分:3)
使用Microsoft的Windows 8 90天试用版,我已经能够验证我的解决方法确实有效。如果您只想支付一次代码签名证书而不是支付年费,这种方法对您也有用,但我无法做出任何保证。我的解决方案是每台机器,但应该很容易转换为按用户工作。
这是我的解决方案:
到目前为止,我使用此方法收到的最严重警告是“此类文件可能会损害您的计算机。”这是典型的“您正在下载可执行文件!”警告。它不会隐藏“运行”选项,也不会使用通过单击VS2010中的“发布”生成的引导网页来显示ClickOnce部署。
感谢所有评论和链接。
答案 2 :(得分:3)
即使没有管理员权限,我也找到了一种绕过过滤器的简便方法。你需要做的是:
@%*
"SkipSmartScreen.bat"
(是的,带引号)与应用程序位于同一文件夹中。您可以稍后重命名批处理文件这将绕过智能屏幕过滤器。
在Windows 10 Home,Pro和Enterprise以及Windows 8 Pro上进行测试。
工作原理:
@
- 这只是用于外观,它隐藏了正在执行的命令的名称%*
- 这会扩展到所有传递的命令行参数(例如,您在批处理文件中删除的文件答案 3 :(得分:1)
以下是关于如何关闭SmartScreen的详细说明:
- Windows SmartScreen - Turn On or Off in Windows 8
- Uncheck option in Folder Options
我用过什么,对我有用什么?从第一个链接开始是“选项一”:
我希望这就是你要找的东西。 :)
答案 4 :(得分:1)
一个老问题,但是最近我遇到了同样的问题,我需要将一个小的安装包下载到用户的PC上,以便他们执行。 但是与往常一样,SmartScreen阻止了下载...
我发现一种解决方法是将安装程序文件打包为.zip(或类似格式),然后让用户下载此压缩文件并在其中执行安装程序。 这至少是我在方案中必须使用的“最精美”的解决方案。
此方法可避免您为文件分配任何类型的证书。您只需要您的用户信任您,但这将绕过SmartScreen筛选器。
我希望这可以用作解决您的问题的方法。