为发布的windows软件解决 “发布者:未知 ”问题

当用户安装未签名的程序时,Windows会显示发布者为未知,导致用户可能拒绝安装。解决此问题的方法是对软件进行代码签名,确保UAC提示中显示发布者的公司名称。这涉及获取代码签名证书,如通过CA机构,如Verisign或Thawte,完成身份验证和证书购买。然后使用数字签名工具SignTool.exe对程序进行签名,增加软件的信任度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

用户安装我们发布的程序时,弹出UAC提示框:

您想允许来自未知发布者的以下程序对此计算机进行更改吗?
发布者:未知

如果安装程序出现该提示,很多用户就不会安装程序了。
从发布者的角度要解决这个问题,就需要对发布的程序做签名认证。使得弹出窗口中显示发布者的公司名称。

用户帐户控制UAC

用户帐户控制(User Account Control,简写作UAC)是微软公司在其操作系统中采用的一种控制机制。是微软在Windows Vista 开始引入的技术,主要功能是当软件在做会影响系统安全的操作时,会触发UAC,需要经过用户同意确认后才可执行。因为大部分恶意软件、病毒、广告插件都会有如:将文件复制到Windows或Program Files等目录、安装驱动、安装ActiveX等影响安全的操作,windows vista及以后的操作系统,对这些操作都会触发UAC,用户都可以在UAC提示时,阻止这些程序的危险操作。

        *安装ActiveX;*安装或卸载程序; *安装设备驱动程序;*修改注册表; *将文件移动或复制到Program Files或是Windows目录;上面的操作都会触发UAC。

签名程序

安全对软件和媒体变得越来越重要。程序签名后,使用户可以看到软件的来源,并且没有被恶意修改或意外损坏。 代码签名技术早已问世多年,但许多软件供应商避免使用它,因为参与这个过程很复杂。 

首先,在对代码签名之前,需要获得由CA(Certificate Authority,数字证书认证机构)签发的代码签名证书。

选择一个CA,登入到它的网站,找到代码签名证书,

通常步骤是:

  1. 要求你输入公司或个人的信息。
  2. 为证书付费
  3. 获得私钥文件*.pvk。私钥需要输入密码(PVK-Password),这个密码需要妥善保管。

在获得私钥的同时会生成公钥上传到CA,CA会审核你的提交的信息,审核完成后,会签发软件发布证书(Software Publishing Certificate)*.spc。

最后,你所拥有的就包括:

  • 私钥文件*.pvk、
  • 私钥密码、
  • 软件发布证书*.spc。

以上步骤,根据不同的认证机构有所不同。在取得证书之后,就可以用来对我们的安装程序进行签名,如:在installshield中可以看到打包的选项中的signing就是用来进行签名的。

代码签名证书

代码签名证书,支持Windows 32位和64位用户模式下的 .exe, .cab, .dll, .ocx, .msi, .xpi, and .xap files 等应用程序和内核模式下的sys ,cat 等驱动程序文件签名。代码签名证书能验证软件的来源和代码的完整性,使用者也会知道该代码程序自发布后未遭到非法窜改,从而对软件开发商产生高度信赖感,保护了软件开发商的利益,使得软件开发商能安全地快速地通过互联网发布软件。所以,首先你需要有一个自己公司所有的代码签名证书。要进行签名,首先要有数字证书才行。

去哪里弄一个代码签名证书 ?

用于软件发布的证书,代码签名证书:需要一个证书,为代码做签名。

证书由颁发组织CA(认证机构)颁发。CA中最突出的是:verisign.com和tawthe.com。  然而,获得一个证书是相当繁琐和费时的过程。(需要CA机构识别你或你的组织才能出具),而且需要我们为认证支付几百美元的证书。

一旦选择一个CA,进入CA的网站导航页面,CA提供一个“代码签名证书”。当你点击【购买】按钮,CA将引导你包括以下步骤:

  • 输入您的个人和公司信息。
  • 支付证书费用。
  • 运行一个特殊的小应用程序,将在您的计算机上创建一个私有密钥文件(* .PVK)。

创建私钥文件时,系统将提示您输入密码(PVK-Password密码)。你应该保管好记住这个密码,使用它来签署您的应用程序。您还必须将私钥文件复制到一个安全的地方。 当在您的计算机上创建私钥文件时,小程序还将创建一个免费的“公钥”文件,并将其发送到CA。 现在CA将启动流程,验证和批准您的组织和领域。这个过程通常需要几天时间。在这段时间内CA机构会通过电话或其他方式和你联系请求一些识别文件。 结论CA验证过程时将给你一个链接到一个软件发布证书文件(* .SPC)。下载这个文件,也是在一个安全的地方 这个过程结束时你将有以下3项:  

  • SPC File
  • PVK File
  • PVK Password

得到认证后,生成证书,把证书打到软件里exe里。


如果希望Windows信任你的软件,就的向这个列表中的公司去做数字证书,会交一笔费用。

360软件的证书

windows微信的证书

数字签名工具 SignTool.exe

使用微软的签名工具SignTool,签名EXE文件。

数字签名工具 SignTool.exe是一个命令行工具,用于对文件进行数字签名,验证文件和时间戳文件中的签名。

安装 Visual Studio 和 Windows SDK 时会自动安装SignTool.exe工具。要运行SignTool.exe工具,我们使用 Visual Studio 命令提示符或 Windows SDK 命令提示符(也称 CMD Shell)。

注意:
不要直接在系统自带cmd上去执行SignTool命令,因为这些命令工具所在的目录并没有添加到Path中;
而是要使用vs开发人员命令提示符工具去执行,如:

命令格式:

        signtool [command] [options] [file_name | ...]

1、以下命令通过使用最佳证书对文件进行自动签名。
signtool sign /a MyFile.exe  

C:\Program Files (x86)\Microsoft Visual Studio 14.0>signtool  sign  /a  Mgfile.exe
Done Adding Additional Store
SignTool Error: File not found: Mgfile.exe

Number of errors: 1

C:\Program Files (x86)\Microsoft Visual Studio 14.0>signtool  sign  /a  D:\Temp\V_1.0_Setup.exe
Done Adding Additional Store
Successfully signed: D:\Temp\V_1.0_Setup.exe


2、以下命令使用存储在受密码保护的 PFX 文件中的证书对文件进行数字签名。
signtool sign /f MyCert.pfx /p MyPassword MyFile.exe  

密码不正确:

C:\Program Files (x86)\Microsoft Visual Studio 14.0>signtool   sign  /f D:\Temp\clientcert.pfx  /p  vmstd56  D:\Temp\V_1.0.0.188_x86_Setup.exe
SignTool Error: The specified PFX password is not correct.

证书标准不对:

C:\Program Files (x86)\Microsoft Visual Studio 14.0>signtool   sign  /f D:\Temp\clientcert.pfx  /p  vm12346789  D:\Temp\V_1.0.0.188_x86_Setup.exe
SignTool Error: No certificates were found that met all the given criteria.


3、以下命令对文件进行数字签名并加盖时间戳。 用于对文件进行签名的证书存储在 PFX 文件中。
signtool sign /f MyCert.pfx /t http://timestamp.digicert.com MyFile.exe  

4、以下命令通过使用位于 My 存储中的证书对文件进行签名,该证书的主题名为 My Company Certificate。
signtool sign /n "My Company Certificate" MyFile.exe 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值