如果您的应用程序在Microsoft SmartScreen中没有足够的声誉,将显示此警告。为了获得声誉,您可以选择以下方式之一:
请继续阅读以了解有关这些不同选项的详细信息。
Microsoft允许软件开发人员提交文件进行恶意软件分析。根据Microsoft的说法,这将帮助开发人员“验证其产品的检测”。如果审核成功,Microsoft SmartScreen的警告将会更快消失,甚至有时会立即消失(对于我自己的一个应用程序来说,它立即生效)。您需要拥有Microsoft账户才能提交应用程序进行审核。
然而,请注意,如果您发布应用的更新版本,那么您还将需要再次请求新的审核。为了解决这个问题,您要么需要使用“扩展验证”或“组织验证”的代码签名证书(详见下文)。
立即和永久地消除Microsoft SmartScreen警告的一种保证方式是从Microsoft批准的证书颁发机构之一购买“扩展验证”(EV)代码签名证书,并使用该EV证书对应用进行签名。
这样的EV证书每年会花费您大约250至700美元(最好比较价格),并且只会发给注册的企业。如果您是一名独立开发者,您必须是独资经营者,并拥有有效的营业执照。您可以在EV Code Signing Certificate Guidelines中了解更多关于EV代码签名证书的正式要求。那么,使用OV代码签名证书时,Microsoft SmartScreen警告会在多长时间内消失?不幸的是,这很难回答,因为微软本身拒绝公布任何相关细节。根据一些非官方统计数据(见下文),通常需要2到8周左右才能永久消除警告。似乎确切的持续时间还取决于您的应用程序所下载的网站声誉。
非官方的统计数据如下:
18天左右,大约安装了430个应用。来源:我自己的证书之一(2022年12月)当您的旧证书过期并开始使用新证书签署代码时,就会发生证书更换。
购买具有最长有效期的OV代码签名证书是一个好主意,因为当您更新证书时,声誉将不幸地不会自动转移到新证书(即使该新证书与旧证书使用相同的私钥进行签名)。
然而,您可以通过在旧证书过期之前获取新的代码签名证书,并使用旧(但尚未过期!)和新证书同时签名代码来减轻更换问题,从而产生两个签名。旧证书的签名将继续绕过SmartScreen,并且同时,新签名将帮助新证书建立信任。因此,新证书在旧证书过期之前获得信任是一个好主意。
如果您的旧证书已经过期,那么您仍然可以将新证书的签名添加到一个已发布的版本的应用程序中,然后重新发布该应用程序版本作为双重签名应用程序。与以前一样,这也将帮助新证书建立信任。
要正确地为您的应用程序进行双重签名,首先使用旧证书对代码进行签名,然后再使用新证书进行签名。使用Microsoft's SignTool的/as
命令行选项,在第一个签名上附加一个额外的签名(而不是替换它)。当你点击某个安装程序(.exe)的“属性”时(Windows Defender SmartScreen 阻止了未识别的应用程序),导致无法安装你的应用程序,对于这个问题,我找到了一个解决方案。
- 右键单击安装程序(.exe)
- 选择“属性”选项
- 在属性底部,勾选取消锁定的复选框
此解决方案适用于Heroku CLI (heroku-x64) 安装程序(.exe)
我的经验如下。自从2005年以来,我们一直在使用常规(非EV)代码签名证书对.MSI、.EXE和.DLL文件进行时间戳签名,直到2018年,SmartScreen从未出现过问题,只有一个案例是我们发布了应用程序的测试版后,它花了3天时间才建立信任。那时候证书处于有效期中间。我不知道SmartScreen在我们应用程序的那个特定版本中可能不喜欢什么,但自那时以来就没有SmartScreen投诉。因此,如果您的证书不是EV证书,则是一个被签署的应用程序(例如.MSI文件)随着时间推移建立信任,而不是证书本身。例如,一个证书几个月前可以发放并用于签署许多文件,但对于每个发布的签名文件,SmartScreen可能需要几天才能停止投诉该文件,就像我们在2018年遇到的情况一样。
我们没有将软件提交给Microsoft恶意软件分析。 Microsoft从2017年开始提供此服务。这可能是Extended Validation(EV)证书的可行替代方案。
总之,为了避免此警告的发生,即使是突然发生,您需要一个扩展验证(EV)代码签名证书,或者将您的软件提交到Microsoft恶意软件分析。
更新: 另外一篇文章在这里:如何在Installshield 2018中添加发布者(可能更好)。
关于这个问题我了解不太多,但请看看下面这个回答是否有用(如果有用请告诉我们,以便我能提供更好的答案):如何通过Windows Defender SmartScreen Protection?这个问题涉及到BitRock——一个非MSI安装程序技术,但总体问题似乎是相同的。
从我上面回答的一个链接中提取出来的内容:“……仅凭证书已经不足以获得信任……SmartScreen是基于声誉的,类似于StackOverflow的方式…… SmartScreen信任不会引起问题的安装程序。Windows机器向Redmond发送关于安装程序和它们引起了多少麻烦的遥测数据。如果你得到足够的支持,那么SmartScreen就会停止自动阻止您的安装程序。这需要时间和大量的安装才能获得足够的支持。没有办法找出您到了多远。”
说实话,这对我来说现在都是新闻,所以如果你自己挖掘到任何信息,请回复我们。
你标记的实际对话框文本与Zone.Identifier
替代数据流和一个值为3
的文件相关(有关详细信息请参见上面链接中的答案)。
我无法将此问题标记为先前的问题的副本,因为它没有被接受的答案。现在让我们把两个问题都保留下来?(一个问题是针对MSI,一个问题是针对非MSI。)