在每次执行时停止相同.exe的智能屏幕警告以及如何预测是否会出现智能屏幕警告

时间:2013-12-10 11:15:22

标签: c# windows-8

我写了一个VS12 .net4.5 .exe,它将自己复制到用户目录(除非它从那里执行)并创建了一个快捷方式,用于shell中的用户目录.exe:sendto。
每次使用发送到菜单执行时,只有一位同事得到智能屏幕警告,他需要点击“更多信息”,然后“执行”。 在.exe属性中有一个Allow按钮,如果你单击它就会消失但是一旦你关闭.exe属性对话框并再次打开按钮就会再次出现!
如何摆脱它?

我经常使用不同的分发策略编写有用的小C#应用程序:有时它是在rar / zip存档中我将它放在我们的NAS上,有时我通过电子邮件发送它,有时它用数据棒传输。

如何可靠地预测是否会出现智能屏幕警告? 我已经阅读了大量关于隐形魔法声誉值的未经验证的信息 真的没有办法正确签署我的申请,以确保不会有警告吗?如果我们确信它会删除智能屏幕警告,我们就准备购买证书了。

1 个答案:

答案 0 :(得分:1)

Smartscreen是一项来自微软的技术,它建立与微软服务器之一的互联网连接,并检查您尝试执行的exe是在白名单上还是正确签名。 因此,它会在执行所有未完全签名和未知的应用程序时警告用户。

您可以使用任何官方数字签名公司获取证书(它们需要付费)。其中最受欢迎的是VeriSign。据我所知,这应该可以阻止来自智能屏幕的警告。

此外,您应该使用signtool创建具有强名称的程序集。这使得组件具有基本的信任度。但是,这不会阻止Smartscreen警告用户执行您的应用程序。 http://msdn.microsoft.com/en-us/library/ms247123(v=vs.90).aspx

使用强名称签名的程序集确保在程序集编译后不会发生任何更改。因此,它可以防止病毒感染程序集,从而使计算机更多地信任exe文件。