如何签署 Windows 批处理 (.bat) 文件?

9 windows-7 code-signing batch-file

我正在运行 Windows 7,当我尝试运行批处理文件时,它说:“无法验证发布者。您确定要运行此软件吗?”

因此,当我尝试使用我的代码签名证书对其进行签名时,它会显示“SignTool 错误:由于无法识别此文件格式,因此无法对其进行签名”。

所以我被困在岩石和坚硬的地方之间。有没有办法消除任何一条消息?

截屏

Syn*_*ech 5

您所看到的是每当您尝试打开已下载的任何时间的文件时 Windows 都会提供的一般提示。发生的情况是,当您下载文件时,它会被标记一个标志,表明该文件来自互联网,因此存在潜在危险。当您尝试运行此类文件时,Windows 会检查它是否具有有效签名,以确定它是否可信。

\n\n

您可以做的是使用file\xe2\x80\x99s 属性中的“取消阻止”按钮从文件中删除该标志,之后,每当您尝试运行它时,Windows 都会让您独自一人:

\n\n

在此输入图像描述

\n\n
\n\n

问题在于批处理文件是可以执行的文本文件。虽然可以对文本文件进行签名,但它最终会在文件中附加一堆二进制数据,这对于批处理文件来说是不好的,因为它是乱码,并且当命令解释器尝试执行它时会导致问题。注释掉签名也不起作用,因为签名会被损坏。

\n\n

因此,签署批处理文件是行不通的。

\n\n

您需要做的是弄清楚为什么系统在尝试运行它时会提示您。默认情况下,Windows 在运行批处理文件之前不会询问,因此您必须有特殊的策略或安全程序来阻止它。检查您的安全程序,看看是否有可以禁用或添加排除项的验证设置。

\n\n

还要检查批处理文件\xe2\x80\x99s 的内容,看看它是否正在运行未签名的可执行文件(不过,默认情况下,Windows 不会提示输入可执行文件,除非它已下载或需要提升权限,因此请检查您的设置)。

\n

  • 您可以使用 type 命令(甚至在二进制文件上)来取消文件的标记。我一直这样做。键入 oldfile>newfile (然后)键入 newfile>oldfile 将生成不带 ADS 标记的 oldfile。 (2认同)

tec*_*tle 4

如果我从网络位置运行批处理文件(或其他可执行文件),我会收到类似的消息。如果是这种情况,您可能需要考虑将其移动到本地驱动器。另一种选择是使用本地驱动器上的单独批处理文件来启动网络上的批处理文件。启动批处理文件只需包含一行:

@call \\network\folder\batch.bat
Run Code Online (Sandbox Code Playgroud)

Windows 不会对本地文件犹豫不决,一旦该文件运行,它就可以毫无问题地调用网络版本。