命令从.exe获取签名者的名字

我想知道是否有一个命令将列出在.exe的属性的数字签名部分中可以find的信息。 特别是我希望能够抓住签名者的姓名。 有没有可以为我生成这些信息的命令?

要从用于创建Authenticode签名的签署者证书中获取主题名称,可以使用Get-AuthenticodeSignature

 PS > $asig = Get-AuthenticodeSignature 'C:\Windows\System32\xcopy.exe' PS > $asig.SignerCertificate.Subject CN=Microsoft Windows, O=Microsoft Corporation, L=Redmond, S=Washington, C=US 

您可能对通用名称(CN)感兴趣,也可能是组织名称(O)。 您可以将可分辨名称从主题解析到其组件中以获取通用名称:

 PS > $asig = Get-AuthenticodeSignature 'C:\Windows\System32\xcopy.exe' PS > $dnDict = ($asig.SignerCertificate.Subject -split ', ') | foreach ` { $dnDict = @{} } ` { $item = $_.Split('='); $dnDict[$item[0]] = $item[1] } ` { $dnDict } PS > $dnDict['CN'] Microsoft Windows PS > $dnDict['O'] Microsoft Corporation 

尝试signtool.exe 。 使用关于signtool的以下参考,

https://msdn.microsoft.com/en-us/library/windows/desktop/aa387764(v=vs.85).aspx

微软Windows Sysinternals的Sigcheck工具可以转储信息。 使用-c命令行选项以csv格式格式化输出,可以将其输出到文件中供以后处理。

Sigcheck是一个命令行实用程序,显示文件版本号,时间戳信息和数字签名详细信息,包括证书链。