我正在运行Windows 7,当我尝试运行批处理文件时,它显示“无法验证发布者。确定要运行此软件吗?”
因此,当我尝试使用代码签名证书对其进行签名时,它会显示“ SignTool错误:无法识别此文件格式,因为无法识别。”
所以我被困在一块岩石和一个困难的地方之间。有没有消除任何一条消息的方法?
我正在运行Windows 7,当我尝试运行批处理文件时,它显示“无法验证发布者。确定要运行此软件吗?”
因此,当我尝试使用代码签名证书对其进行签名时,它会显示“ SignTool错误:无法识别此文件格式,因为无法识别。”
所以我被困在一块岩石和一个困难的地方之间。有没有消除任何一条消息的方法?
Answers:
如果我从网络位置运行批处理文件(或其他可执行文件),也会收到类似的消息。在这种情况下,您可能需要考虑将其移动到本地驱动器。另一种选择是在本地驱动器上使用单独的批处理文件以在网络上启动该文件。启动批处理文件只需要一行:
@call \\network\folder\batch.bat
Windows不会对本地文件感到厌烦,并且该文件运行后,它可以调用网络版本而不会出现问题。
E:
是网络映射的驱动器吗?
您不签署批处理文件。听起来您的批处理文件正在调用其他应签名的内容。
编辑:现在您已经发布了一个批处理文件,我们可以看到这是由于网络位置。或者,有时候,如果您仅从网络位置复制文件,就会发生这种情况。在后一种情况下,这是因为Windows已通过“备用数据流”将文件标记为位于其他Internet区域中。您可以通过以下两种方法之一来解决:
type thefile.bat > %temp%\newfile.bat & type %temp%\newfile.bat > thefile.bat
您会看到的是Windows会在您每次尝试打开已下载文件的任何时间时提供的常规提示。发生的情况是,当您下载文件时,该文件会带有标记,表明该文件来自Internet,因此具有潜在的危险。当您尝试运行这样的文件时,Windows会检查它是否具有有效的签名,以确定它是否可以信任。
您可以做的是通过使用文件属性中的“ 取消阻止”按钮从文件中删除标志,此后,无论何时您尝试运行它,Windows都会让您独自一人:
问题是批处理文件是可以执行的文本文件。虽然可以对文本文件进行签名,但最终将向该文件中添加一堆二进制数据,这对于批处理文件是不好的,因为它是乱码,并且在命令解释器尝试执行它时会引起问题。注释掉签名也不起作用,因为签名随后会损坏。
因此,签名批处理文件将无法正常工作。
您需要做的是弄清楚为什么系统在尝试运行时会提示您。默认情况下,Windows在运行批处理文件之前不询问,因此您必须具有特殊的策略或安全程序来阻止它。检查您的安全程序,以查看是否存在可以禁用或添加排除项的验证设置。
还要检查该批处理文件的内容,以查看它是否正在运行未签名的可执行文件(尽管同样,默认情况下,Windows不会提示您输入可执行文件,除非已下载该文件或需要提升的特权,因此请检查设置)。
goto :eof
在签名之前插入,但是这样会改变文件的哈希值,并使签名无效,从而使文件损坏/不安全。我想您可以在对文件进行签名之前在文件的末尾找到该行,它应该可以工作。尝试有趣的实验…