如何设置Windows窗体应用程序的发布者名称

时间:2011-07-29 04:49:47

标签: c# .net winforms setup-deployment

我创建了Windows Forms应用程序的设置。在Windows 7中安装此设置后,它显示如下内容:

Name: my application.exe  
Publisher: unknown publisher  
Type: application  
From: my application.exe  

我想设置发布商名称。如何设置发布者名称?

1 个答案:

答案 0 :(得分:19)

您需要对输出代码进行数字签名。我可以通过文章 Signing and Checking Code with Authenticode 开始。

这样做的全部目的是保证您的代码没有被篡改。如果您从其中一个证书颁发机构purchase a code signing certificate,则可以阻止“您信任这个”窗口出现。

设置并不是一项简单的任务,但是一旦脚本启动就可以使用脚本执行。
你找不到一个简单,快速解决的答案。

这是最相关部分的剪切和粘贴。您可能需要进一步阅读以获得您想要的内容。


MakeCert

使用MakeCert测试程序生成测试 X.509证书。 MakeCert执行以下任务:

  1. 为数字签名创建公钥/私钥对,并将其与您选择的名称相关联。
  2. 将密钥对与您选择的发布商名称相关联。
  3. 创建一个 X.509证书,由测试根密钥或您指定的密钥签名,将您的名称绑定到密钥对的公共部分。证书将输出到文件,系统证书存储区或两者。
  4. MakeCert Internet Explorer 3.02 UPD示例

    以下是使用Microsoft Internet Explorer 3.02 UPD选项创建证书的示例:

    MakeCert -k:c:\KeyStore\MyKey.pvk -n:CN=MySoftwareCompany Cert.cer
    

    在此示例中,将创建名为 Cert.cer 的证书文件。名为 MyKey 的密钥对的公共部分绑定到发布者 MySoftwareCompany

    Cert2SPC

    生成证书后,您可以使用Cert2SPC程序创建软件发布证书。该程序将多个 X.509证书包装到 PKCS#7 签名数据对象中。请注意,此程序仅用于测试目的。从证书颁发机构获取有效的软件发布证书。 这是一个例子:

    Cert2SPC MyCert.cer MyCert.spc
    

    这将 X.509证书 MyCert.cer 包装到名为 MyCert.spc的 PKCS#7软件发布证书

    SignCode

    最后一步是使用SignCode程序实际签名文件。该计划将:

    1. 创建文件的加密摘要
    2. 使用您的私钥对摘要进行签名。
    3. X.509证书软件发布证书复制到  一个新的 PKCS#7 签名数据对象。 PKCS#7 对象包含序列号  用于创建签名的证书的编号和发行者,  证书和签名的摘要信息。
    4. 将对象嵌入文件中。
    5. 或者,它可以为文件添加时间戳。签名文件时应始终添加时间戳。但是,SignCode还能够为以前签名的文件添加时间戳,但有一些限制(请参阅选项表后面的示例)。
    6. 文件签名后(假设您拥有有效证书)并加盖时间戳,该文件可以分发给您的客户。请注意,使用测试程序MakeCert和Cert2SPC生成的证书对于将分发给公众的代码无效。独立软件供应商必须从GTE,VeriSign Inc.或其他认证机构获取证书,以签署将分发给公众的代码。

      Internet Explorer 3.02 UPD的SignCode示例

      以下是使用Microsoft Internet Explorer 3.02 UPD选项对文件进行签名和时间戳的两个示例。第一个使用私钥名称​​ MyKey ,第二个使用私钥文件 My.pvk

      SignCode -prog MyControl.exe -spc Cert.spc -pvk MyKey -timeStamper http://timestamp.verisign.com/scripts/timstamp.dll
      SignCode -prog MyControl.exe -spc Cert.spc -pvk My.pvk -timeStamper http://timestamp.verisign.com/scripts/timstamp.dll
      

      注意在上面的URL中,timstamp.dll是正确的。这不是印刷错误。

      在这两种情况下,PKCS#7对象Cert.spc都嵌入到文件的摘要MyControl.exe中。在第一个示例中,使用MyKey密钥对的私钥对摘要进行签名,并添加时间戳。在第二个示例中,使用私钥文件My.pvk对摘要进行签名,并添加时间戳。