如何签名安装程序以避免Vista的UAC警告

16

我有一个需要分发的应用程序,想要签名以避免在vista中出现UAC警告。目前我看到的是这个...

UAC http://img694.imageshack.us/img694/7289/uac.jpg

我正在使用Visual Studio创建安装程序,但该应用程序不是使用.NET编写的。我需要对包含在.msi文件中的.exe和.msi文件本身进行签名吗?我需要哪种类型的密钥,应该从哪里获取?目前我正在考虑Verisign,尽管他们很贵,但我需要让人信任。获取密钥后,我该如何签名?如果我理解得正确,al.exe和signtool.exe只适用于.NET程序集,对吗?谢谢!

1个回答

13

这个特定的对话框是最可怕的。如果应用程序已签名但未经过计数签名,则存在一个不那么可怕的对话框。 (即。它只由您签名)。要完全绕过它,确实需要计数签名。

Windows包含受信任的根证书颁发机构列表。(MMC.EXE > 添加插件 > 证书 > 计算机帐户) 其中一些用于“代码签名”,这意味着这些证书颁发机构可以反向签署您的签名。 Verisign在该列表中。 如果您正在使用企业Internet,则公司的签名可能/可以在其中。

无论如何,一旦您获得了计数签名证书,确实可以使用signtool来签署您的应用程序及其安装程序。签署自己的应用程序是良好的实践,并有助于配置管理。Signtool具有GUI,但也可以在CLI模式下使用。当您想要建立过程提示一次密钥然后构建所有内容直到安装程序时,后者非常有用。 (不要将公司证书的密码硬编码到您的构建过程中!)

但正如我之前所说,您还可以使用未经计数签名的签名。这对于测试非常有用,并且可以熟悉整个过程并进行自动化构建。


1
你有参考资料或网站可以展示这个是如何工作的吗?我找不到太多关于它的文档。谢谢。 - mmmm
3
你看过http://msdn.microsoft.com/en-us/library/ms537361(VS.85).aspx吗?目前微软的代码签名技术被称为“Authenticode”,这应该会出现更多相关网站。 - MSalters

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接