将Clickonce应用程序分发到Windows 8

Alv*_*vin 15 clickonce

我使用有效的发布商代码签名证书进行签名.

当用户下载setup.exe时,Windows 8 SmartScreen仍向用户发出警报,尽管发布者是有效的.

现在,安装后.Windows 8 SmartSreen将提示另一条消息"Windows SmartScreen阻止无法识别的应用程序启动.运行此应用程序可能会使您的PC面临风险." 发布者是Unkown发布者.

我也应该签署集会吗?当我拥有有效证书时,为什么SmartScreen仍在提示?

如何签署应用程序exe,而不是设置exe?

red*_*alx 3

我也应该在大会上签字吗?

我怀疑这就是问题所在。ClickOnce 要求对其清单进行签名(您别无选择),但我认为不需要对程序集本身进行签名(正如您所提到的),但 Windows 8 可能确实有此要求。

可以修改未签名的程序集,并且任何引用程序集都将尽职尽责地加载并执行其中的代码 - 不问任何问题,因此恶意实体可能会替换磁盘上的一个或多个程序集并危害您的应用程序。ClickOnce 允许具有较低系统权限的用户执行他们原本不允许执行的任务,因为该权限是通过数字证书(隐式)授予的(用于签署目标上预先存在的 ClickOnce 清单的证书)机器,或通过目标机器上的根证书受信任)。因此,如果不对程序集进行签名,安全链中就会存在一个薄弱环节,并且很可能这一点在 Windows 8 中已得到加强(默认情况下)。

要作为程序集进行签名,请参阅:如何:对程序集进行签名 (Visual Studio)

注意。dotNet 程序集签名通常称为强命名(术语“签名”和“强命名”在本文中似乎可以互换使用)。

注意。强命名程序集只能引用其他强命名程序集,尽管它们可以使用不同的证书进行签名。如果您引用了非强命名的第三方程序集,这可能会导致问题 - 这种情况很少见,因为发布未签名的代码是不好的做法,一种选择是使用 sn.exe 使用您自己的证书对程序集进行签名