在开发人员打包安装程序后,在测试安装程序时,会发现操作系统报出如下的错误:
您想允许来自未知发布者的以下程序对此计算机进行更改吗? 发布者:未知
这是微软操作系统中用户帐户控制的功能。
用户帐户控制(User Account Control,简写作UAC)是微软公司在其Windows Vista及更高版本操作系统中采用的一种控制机制。其原理是通知用户是否对应用程序使用硬盘驱动器和系统文件授权,以达到帮助阻止恶意程序(有时也称为“恶意软件”)损坏系统的效果。
在安装或运行程序过程中,对计算机做出需要管理员级别权限的更改时,UAC 会通知你。如果你是管理员,则可以单击“是”以继续。如果你不是管理员,则必须输入管理员密码才能继续。如果你授予权限,则将暂时具有管理员权限来完成任务,任务完成后,恢复标准用户权限。这样,即使使用的是管理员帐户,在不知情的情况下计算机将不接受任何更改,从而帮助防止在计算机上安装恶意软件和间谍软件、或者对计算机做出任何更改。
对于普通用户来说,这个功能虽然保证了系统的安全性,但是可能会觉得很烦人,要避免这个问题,只需要降低UAC的级别就可以解决,具体可以参考:
http://jingyan.baidu.com/article/4d58d541d6aa869dd5e9c057.html
但是对于软件发布者来说,如果你的安装程序出现该提示,其实会很影响用户的体验,从发布者的角度要解决这个问题,就需要对发布的代码进行微软代码签名认证。参考http://www.pantaray.com/signcode.html,总结起来就是:
首先,在对代码签名之前,需要获得由CA(Certificate Authority,数字证书认证机构)签发的代码签名证书。选择一个CA,登入到它的网站,找到代码签名证书,通常步骤是:1、要求你输入你的公司或个人的信息。2为证书付费。3、获得私钥文件*.pvk。私钥需要输入一个密码(PVK-Password),这个密码需要妥善保管。
在获得私钥的同时,会同时生成公钥上传到CA,CA会审核你的机构,在审核完成后,会签发软件发布证书(Software Publishing Certificate)*.spc。
最后,你所拥有的就包括:私钥文件*.pvk、私钥密码、软件发布证书*.spc。
以上会步骤根据不同的认证机构有所不同。
在取得这些证书之后,就可以用来对你的安装程序进行签名,在installshield中,就可以看到打包的选项中的signing就是用来进行签名的。