我公司通过我们的网站向客户分发安装程序。最近,当我通过网站下载并尝试运行安装程序时,我收到警告消息:
Windows保护您的电脑
Windows Defender SmartScreen阻止了 开始时无法识别的应用程序。运行此应用程序可能会将您的PC放在 风险。
如果我右键单击安装程序并选择属性,请注意以下事项:
我们的安装程序已签名。
如何找到Windows Defender SmartScreen警告的原因?
我还没有设法找到Windows Defender的任何日志文件,也没有在事件查看器中找到任何内容。
答案 0 :(得分:13)
要么购买“扩展验证”代码签名证书,要么购买标准代码签名证书并等待几周直到警告消失。
继续阅读以全面了解这些 Microsoft SmartScreen 警告以及您可以做什么和应该了解的内容。
立即摆脱 Microsoft SmartScreen 警告的唯一选择是从 Microsoft-approved certificate authorities (CA) 之一购买“扩展验证”(EV) 代码签名证书,并使用该 EV 对您的应用进行签名证书。
此类 EV 证书每年的费用在 250 and 700 USD
之间,并且只会颁发给已注册的企业。如果您是单一开发商,则您必须是独资经营者并拥有有效的营业执照。您可以在 EV Code Signing Certificate Guidelines 中详细了解 EV 代码签名证书的正式要求。
EV 证书也必须以安全的方式存储。它通常会以硬件令牌的形式通过实物交付给您。
更便宜的“标准”(即非 EV)代码签名证书也可用于消除 Microsoft SmartScreen 警告,但不会立即消除。标准代码签名证书的费用为每年 100 and 500 USD
,也可以颁发给没有有效营业执照的私人开发者。一些 CA 还为开源项目提供折扣。
标准代码签名证书的问题在于它们不能立即使 Microsoft SmartScreen 静音。相反,在警告消失之前,您的证书需要一些时间来建立声誉。一旦您的证书建立了足够的声誉,使用该证书签名的所有应用程序都将受到 Microsoft SmartScreen 的信任,并且不会再触发警告。
那么,使用标准代码签名证书时,Microsoft SmartScreen 警告需要多长时间才能消失?不幸的是,这很难回答,因为 Microsoft 本身拒绝发布有关此的任何详细信息。而且由于 Microsoft SmartScreen 可能会使用大量信息来确定可信度,因此您的里程可能会有很大差异。根据各种来源报告的非官方数字(见下文),通常需要 2 and 8 weeks
之间的时间,直到警告永久消失。但是,请记住,这还取决于您的应用的下载量和/或安装量。
非官方数字是:
42 days
和关于 1.400 app installs
。来源:我自己的证书(2021 年 2 月)16 days
和关于 2.000 app installs
。来源:我自己的证书(2020 年 5 月)One month
和超过 10.000 downloads
。资料来源:here(2020 年 1 月)a few weeks
和 a month
之间。资料来源:here(2019 年 12 月)2-3 weeks
。资料来源:here(2019 年 12 月)3.000 downloads
。资料来源:here(2013 年 12 月)自 2021 年 3 月起,Microsoft 允许软件开发人员submit a file for malware analysis 和 submit a file download URL for analysis。根据微软的说法,这应该有助于软件开发人员“验证他们产品的检测”,并有助于加快 Microsoft SmartScreen 的声誉建立过程。至少这在过去对我有用。
请注意,标准代码签名证书的另一个问题是证书声誉不会自动转移到新的重新颁发的证书(例如,当您的旧证书已过期时 - 我已经那里)。即使新证书基于与旧证书相同的证书签名请求 (CSR),也是如此。因此,强烈建议购买具有长期有效期的标准代码签名证书。
最后一点,请务必确保为已签名的应用添加时间戳。时间戳非常重要,因为它允许签名的应用程序在证书本身过期后仍然有效。确保对文件和时间戳签名使用 SHA-2 摘要算法(例如 SHA-256)。另请参阅 this question 了解更多详情。
如果您根本不使用任何代码签名证书,Microsoft SmartScreen 警告最终也会消失。然而,这可能需要大量的时间(数月)和/或下载(数万次)。另一个大问题是,每次您发布应用程序的更新版本时,等待期都会重新开始。因此,如今在没有任何代码签名证书的情况下发布应用几乎是不可能的。
作为替代方案,您还可以使用 Microsoft app store 分发您的应用。对于从官方应用商店获取的应用,Microsoft SmartScreen 通常不会显示任何警告。
答案 1 :(得分:9)
在单击任何阻止您的应用程序安装的安装程序(.exe)的属性(Windows Defender SmartScreen阻止了无法识别的应用程序)后,我找到了一种解决方案
- 右键单击安装程序(.exe)
- 选择属性选项。
- 单击复选框以选中“属性”底部的取消阻止。
此解决方案适用于 Heroku CLI (heroku-x64)安装程序(.exe)
答案 2 :(得分:3)
如果您具有标准的代码签名证书,则您的应用程序将需要一些时间来建立信任。 Microsoft确认扩展验证(EV)代码签名证书允许跳过此信任建立期。 According to Microsoft,扩展的验证证书使开发人员可以立即在SmartScreen中建立声誉。否则,用户将看到警告,例如“ Windows Defender Smartscreen阻止无法识别的应用程序启动。运行此应用程序可能会使您的PC面临危险。”,并带有两个按钮:“仍然运行”和“不运行”。< / p>
Another Microsoft resource声明以下内容(引号):“尽管不是必需的,但是即使没有该文件或发布者的先前信誉,由EV代码签名证书签名的程序也可以立即建立SmartScreen信誉服务的信誉。签名证书还具有唯一的标识符,可以更轻松地维护证书续订期间的声誉。”
答案 3 :(得分:2)
此处的另一篇文章: How to add publisher in Installshield 2018 (可能更好)。
我对此问题的了解不多,但请查看这个问题的答案是否告诉您任何有用的内容(并告诉我们,以便我可以在此处提出更好的答案): How to pass the Windows Defender SmartScreen Protection? < / strong>这个问题与BitRock有关 - 一种非MSI安装程序技术,但总体问题似乎是一样的。
从我上面的回答中指出的其中一个链接中提取:“......证书不再足以获得信任...... SmartScreen是基于声誉的,而不是与StackOverflow的工作方式不同...... SmartScreen信任不会导致问题的安装程序.Windows计算机向Redmond发送有关已安装程序的遥测信息以及它们造成的麻烦。如果您得到足够的赞许,SmartScreen将自动停止阻止您的安装程序。这需要花费大量的时间和大量的安装来获得足够的大拇指。没有办法知道你走了多远。“
老实说,此时这对我来说都是新闻,所以请回复我们自己挖掘的任何信息。
您在上面标记的实际对话文本肯定与Zone.Identifier
备用数据流相关,其值为3
,并添加到从Internet下载的任何文件中(请参阅上面的链接答案)更多细节)。
我无法将此问题标记为前一个问题的副本,因为它没有接受的答案。我们暂时搁置两个问题吗? (一个问题是MSI,一个是非MSI)。