相关疑难解决方法(0)

签署Windows EXE文件

我有一个EXE文件,我想签名,以便Windows不会警告最终用户有关"未知发布者"的应用程序.我不是Windows开发人员.有问题的应用程序是从生成屏幕保护程序应用程序的应用程序生成的屏幕保护程序.因此,我对文件的生成方式没有影响.

我已经发现我需要来自Verisign或instantssl.com 等CA代码签名证书.我不明白的是我需要做什么(如果可能的话)签署我的EXE文件.什么是简单的解释?

Mel Green的回答让我更进一步,但是signtool要我指定在任何情况下使用哪种证书.我可以以某种方式获得免费的代码签名证书来测试这对我是否有用吗?

另请注明哪种证书类型是正确的.大多数网站只提到"代码签名",并谈论签署用户实际编译的应用程序.对我来说情况并非如此.

windows exe sign certificate

157
推荐指数
9
解决办法
16万
查看次数

WPF永远在顶部

即使其他应用程序在Fullscreen上运行,是否可以使窗口始终保持在顶部?我正在使用TopMost = true,但当其他应用程序在全屏运行时,我的隐形.WindowStyle = None顺便说一句,这是窗口.

编辑:不要让其他窗口最小化

c# wpf topmost

45
推荐指数
3
解决办法
6万
查看次数

我在哪里可以找到makecert.exe?Visual Studio Ultimate 2012

尝试使用makecert UI工具,以便更容易生成自签名代码证书我试图找到makecert.exe的DIR位置

我按照前面的答案,所有命令行开关都正常工作. - 但是在尝试使用UI工具时,我收到了错误:

在此输入图像描述

所以我假设我需要将该工具放在与makecert.exe和pvk2pfx.exe相同的目录中

这是我看过的地方:

  • C:\ Program Files(x86)\ Microsoft SDKs\Windows\v7.0A\Bin
  • C:\ Program Files(x86)\ Microsoft SDKs\Windows\v7.0A\Bin\x64
  • C:\ Program Files(x86)\ Microsoft SDKs\Windows\v8.0A\bin(空)
  • C:\ Program Files(x86)\ Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0工具
  • C:\ Program Files(x86)\ Microsoft Visual Studio 11.0\SDK\v3.5\Bin
  • C:\ Program Files\Microsoft Visual Studio 11.0(无相关文件夹)

makecert visual-studio-2012

37
推荐指数
2
解决办法
5万
查看次数

如果将自签名CA根证书导入到计算机存储中,是否可以在没有测试模式的情况下在64位Windows上安装自签名驱动程序?

这是一个很好的答案,其中包括创建自签名CA,然后使用获得的证书签署可执行文件:如何在Windows上为代码签名创建自签名证书?.

我已经在网上阅读了很多关于驱动程序签名如何工作的讨论,答案似乎几乎是毫无疑问的,如果没有启用测试模式,你就无法加载未签名或自签名的驱动程序.然而,我与之相关的答案,特别是Roger Lipscombe的一个评论似乎提供了一个矛盾的观点:

如果要将其用于签名驱动程序,则需要将CA证书导入到计算机存储中.我的示例将其导入到用户存储中,这对于大多数软件来说都很好,用于测试/内部目的.

对我来说,只要将CA证书导入到机器商店,我就可以安装带有自签名证书(由自签名CA颁发)的驱动程序.我不必对系统进行任何其他更改(通过按启动菜单上的F8禁用测试模式,弄乱启动配置标志,如TESTSIGNING或NOINTEGRITYCHECKS).

我对么?当人们需要加载没有提供适当数字签名的驱动程序(例如旧的打印机驱动程序等)时,这种方法没有被广泛使用的障碍有哪些(如果有的话).相反,人们依赖于启动测试模式或第三方软件(DSEO)来篡改您的系统文件以运行此类驱动程序.

这种方法的缺点是什么?上述SO问题中描述的过程需要管理员权限,但无论如何安装驱动程序都需要它们.信任自签名CA可能存在安全风险 - 但是不会禁用所有签名检查会带来更大的安全风险吗?

windows security driver ca self-signed

25
推荐指数
2
解决办法
9224
查看次数

我们为什么要在进行代码签名时设置时间戳?

如果我通过签名设置时间戳,会发生什么?
如果我没有设置怎么办?

这是必要的吗?为什么推荐?

cryptography code-signing portable-executable trusted-timestamp

18
推荐指数
2
解决办法
1万
查看次数

申请签署/验证

我对Windows开发比较陌生,但刚刚完成了一个小项目.我想让我的应用程序"验证"像许多其他应用程序一样.例如,当您启动应用程序并弹出UAC时,它将没有带有黄色条的"发布者未知"消息,并且应该有一个"验证者:"部分.

我希望我能正确解释.有谁知道如何做到这一点?我希望它不像你需要付钱的SSL证书......

如果我的问题不清楚,或者我没有以正确的方式解释,请随时告诉我.谢谢!

c# windows code-signing manifest visual-studio-2010

15
推荐指数
2
解决办法
1万
查看次数

Windows7启动选项允许忽略未签名的驱动程序

我正在学习Windows内核模式驱动程序开发.我编写了一个小型测试驱动程序,我可以在VirtualBox中的VM下运行的Windows 7 32位Ultima版本下成功注册,取消注册,加载和卸载.

我的主机是Windows 7 64位家庭高级版.

编译为64位的驱动程序将不会在Windows 7 Home Edition下加载.我一直拒绝注意到这个版本的Windows不允许未签名的驱动程序.

我尝试了两件事:

  1. 我使用F8启动选项允许未签名的驱动程序(不起作用)

  2. 我以管理员身份运行CMD并执行以下两个命令

    bcdedit.exe -set loadoptions DDISABLE_INTEGRITY_CHECKS

    bcdedit.exe -set TESTSIGNING ON

并重新启动.我的桌面在"TestMode"中显示我,但我仍然听到同样的拒绝.

任何人都可以帮助我或解释是否有家庭版的额外步骤?

---- {更新} ----在倾注了大量MSDN之后,看来我的解决方案就是自我签署我创建的驱动程序.我下载的DDK似乎没有工具链来进行自我签名.我已经下载了WinDDK-7600.16385.1.但奇怪的是,如果我只是F8 @启动时间并告诉它允许未签名的驱动程序,我的Windows Ultima Edition会愉快地加载我的驱动程序.

signing driver windows-7

14
推荐指数
1
解决办法
3万
查看次数

Signtool允许我签署代码,但Set-AuthenticodeSignature说"证书不适合代码签名"

我有一个自签名代码签名证书(使用此答案中的说明制作),当我使用时它可以正常工作signtool.exe.但是,如果我尝试使用Powershell进行签名,则会失败.

用signtool签名

C:\>signtool sign /v /n "VetWeb" SetupRDPPermissions.ps1
The following certificate was selected:
    Issued to: VetWeb
    Issued by: VetWeb CA
    Expires:   Sat Dec 31 18:59:59 2039
    SHA1 hash: 84136EBF8D2603C2CD6668C955F920C6C6482EE4

Done Adding Additional Store
Successfully signed: SetupRDPPermissions.ps1

Number of files successfully Signed: 1
Number of warnings: 0
Run Code Online (Sandbox Code Playgroud)

登录Powershell

PS C:\> $cert = @(Get-Childitem cert:\CurrentUser\My | Where-Object -FilterScript {$_.Subject -eq 'CN=VetWeb'})[0]
PS C:\> Set-AuthenticodeSignature SetupRDPPermissions.ps1 $cert
Set-AuthenticodeSignature : Cannot sign code. The specified certificate is not suitable for …
Run Code Online (Sandbox Code Playgroud)

powershell code-signing signtool

10
推荐指数
2
解决办法
1万
查看次数

如何在没有用户交互的情况下在Windows 10中创建和安装X.509自签名证书?

问题

  • 创建并安装临时证书以在我的开发环境中签署代码.
  • 这必须使用无人参与的 脚本(无需用户交互).

遗留脚本

现在,我有这个脚本使用不推荐使用的工具makecert创建证书:

makecert -r -pe -n "CN=My CA" -ss CA -sr CurrentUser -a sha256 -cy authority -sky signature -sv MyCA.pvk MyCA.cer
certutil -user -addstore Root MyCA.cer
certutil -addstore Root MyCA.cer
makecert -pe -n "CN=My Company" -a sha256 -cy end -sky signature -ic MyCA.cer -iv MyCA.pvk -sv MySPC.pvk MySPC.cer
pvk2pfx.exe -pvk MySPC.pvk -spc MySPC.cer -pfx MySPC.pfx
certutil -f -user -p "" -importPFX MySPC.pfx
Run Code Online (Sandbox Code Playgroud)

上面的脚本创建了2个证书:

  1. MyCA.cer:自签名的根颁发机构证书.
  2. MySPC.cer:签署我的代码的证书(签名MyCA.cer).

此脚本还会打开请求用户密码和用户确认的对话框,以便在受信任的根证书颁发机构存储中安装证书.我需要在没有用户交互的情况下完成此操作. …

powershell unattended-processing x509certificate x509 windows-10

9
推荐指数
1
解决办法
2249
查看次数

代码签署可执行文件两次

简短的问题

如何从可执行文件(.EXE/.DLL)获取有关多个代码签名证书的信息?

预期答案

最终接受的答案应该提出一种方法来获得C#中的所有证书.概念/伪代码是可以的,我不指望你写完整的源代码.

有关建议工具的中间答案,请参阅Security.StackExchange上的问题.

很长的问题

我正在研究是否可以在插件(.DLL)上使用多个代码签名证书来检查它是否已经过官方测试.这是程序:

  • 插件DLL由供应商签名,就像任何其他应用程序一样
  • 插件DLL进入测试实验室并进行一系列测试
  • 测试实验室再次对插件DLL进行签名,以便使用DLL的应用程序可以查看是否使用了经过测试的插件

似乎可以使用第二次签署DLL

 signtool /v /f <pfx> /as <dll>
Run Code Online (Sandbox Code Playgroud)

这可能有用的迹象:

  • 文件大小增加
  • 该工具打印成功消息

但是,有一些问题显示第二个签名:

  • 虽然Windows资源管理器说"签名列表",但它只显示一个证书
  • C#X509Certificate.CreateFromSignedFile()方法只能返回一个证书

目前我实际上是在EXE文件而不是DLL文件上尝试我的代码,但这应该不重要.EXE已使用受信任的根证书和时间戳签名.第二个签名是使用我自己的证书创建的,遵循这些步骤,目前没有时间戳.

在问这个问题之前我做了些什么:

  • 在Stackoverflow上搜索现有答案
  • 在Google上搜索工具

到目前为止我发现的唯一相关问题是如何使用时间戳正确地进行双重签名,但它没有答案.

.net c# code-signing

7
推荐指数
1
解决办法
2404
查看次数

TFS 2010 构建过程中出现“SignTool 错误:访问被拒绝”

当我尝试签署文件时,收到“SignTool 错误:访问被拒绝”消息。当我使用管理员cmd时,一切正常。但是,此过程将在 TFS 2010 构建过程中使用,并且使用带有 Signtool 的 InvokeProcess 任务会给出与非管理员命令提示符相同的访问被拒绝消息。

更多信息:

按照这些说明操作后,我有以下文件:

  • MyCA.cer
  • MyCA.pvk
  • MySPC.cer
  • MySPC.pvk
  • MySPC.pfx

MyCA 位于我的受信任根证书颁发机构中 我将 MySPC.pfx 导入到个人证书中,遵循此处的建议:SignTool 错误:访问被拒绝

为了进行签名,我使用导入到“个人”部分的 MySPC.pfx 的指纹,因此我的 Signtool 命令如下所示:

符号 /sha1 1e9d7b5ad98552d9c58944e3f3903e6b929f4819 /t http://timestamp.verisign.com/scripts/timestamp.dll “文件名”

这再次在管理模式下起作用。当以管理员身份运行 cmd 时,这也适用:

符号 /f "C:\Code Signing Non-Release\MySPC.pfx" /t http://timestamp.verisign.com/scripts/timestamp.dll "文件名"

一般来说,代码签名是新手,因此欢迎任何帮助。

code-signing tfsbuild

5
推荐指数
1
解决办法
1706
查看次数

如何正确签署可执行文件

所以我做了一个小工具,一个控制台应用程序,当在Win7上运行时带来了安全盒(UAC).我尝试使用以下步骤在VS 2010中签署此EXE文件:

1-项目属性
2-签名
3-创建新密钥,如下所示

在此输入图像描述

密钥文件已成功创建,您可以在下面的捕获中看到.

在此输入图像描述

问题:

文件仍然被安全框阻止,当我使用signtool.exe检查文件是否签名时,它告诉我,没有找到签名.如果我遵循了错误的步骤,请纠正我.

在此输入图像描述

c# uac visual-studio-2010 digital-signature

3
推荐指数
2
解决办法
4961
查看次数

为什么我的应用程序会导致SmartScreen消息?

我定期为朋友制作软件并用于学校任务.我将这些可执行文件上传到我的网站.但是当他们下载软件并执行它时,他们会收到此错误

图片1

我理解你只需按"更多信息"来解决这个问题,但有没有办法完全阻止这个?

我做了一个小项目来测试它是否仍会发生,而且确实如此.

图片2

我没有添加任何额外的代码,只是那个标签.我注意到只有在从Internet下载文件或从外部驱动器复制文件时才会出现错误.我想为我正在计划的游戏制作一个自定义安装程序,我不想在安装程序中出现这个:/.谁有能力在这种情况下帮忙?谢谢.

c#

1
推荐指数
1
解决办法
87
查看次数