我浏览了这些问题,但找不到与我遇到的问题完全相同的问题。
我按照 Windows 11 下的说明安装了 Signtool,并尝试应用此处的说明:https://learn.microsoft.com/en-us/windows/win32/seccrypto/using-signtool-to-sign-a -文件
我只需输入:
signtool sign myprog.exe
我得到以下内容。什么给出? :
行:1 字符:72 ... .0.22000.0\x64\Signtool 中的文件 (x86)\Windows Kits" 符号 ChecksB ... ~~~ 表达式或语句中出现意外的标记“符号”。 类别信息:ParserError:(:) [],ParentContainsErrorRecordException FullQualifiedErrorId:意外令牌**
输出看起来很奇怪,您似乎位于一个名为“Signtool”的文件夹中。如果您使用 Powershell,则需要使用
.\
来调用当前目录中的应用程序,例如:
cd 'C:\Program Files (x86)\Windows Kits\10\bin\10.0.22000.0\x86\'
然后
.\signtool.exe sign C:\myprog.exe
就我而言,我尝试在 Windows Powershell 控制台中执行以下命令。
"C:\Program Files (x86)\Windows Kits\10\bin\10.0.22000.0\x86\signtool.exe" sign /fd sha256 /tr http://ts.ssl.com /td sha256 /sha1 b4e6e78db24d93c2540xxx69a0b2643922124191 FileToBeSigned.exe
深入了解一下,这种行为是由于 PowerShell 解释命令的方式造成的。 在 PowerShell 中,双引号用于表示字符串,命令中的任何空格或特殊字符都可能导致解析问题。
要解决此问题,您可以使用 & 作为行的开头。
& "C:\Program Files (x86)\Windows Kits\10\bin\10.0.22000.0\x86\signtool.exe" sign /fd sha256 /tr http://ts.ssl.com /td sha256 /sha1 b4e6e78db24d93c2540ae669a0b2643922124191 FileToBeSigned.exe
或者像我一样,切换到 Windows 命令控制台,首先执行
CMD.EXE
,然后执行原始命令,效果非常好。