8

Я использую Windows 7, и когда я пытаюсь запустить командный файл, он говорит: «Не удалось проверить издателя. Вы уверены, что хотите запустить это программное обеспечение?"

Поэтому, когда я пытаюсь подписать его с помощью сертификата для подписи кода, появляется сообщение «Ошибка SignTool. Этот формат файла не может быть подписан, поскольку он не распознан».

Так что я застрял между скалой и трудным местом. Есть ли способ устранить любое сообщение?

Скриншот

3 ответа3

4

Вы не подписываете пакетные файлы. Похоже, ваш пакетный файл вызывает что-то еще, что должно быть подписано.

Изменить: Теперь, когда вы разместили пакетный файл, мы можем видеть, что это из-за сетевого расположения. Или иногда это случается, если вы просто копируете файл из сетевого расположения. В последнем случае это связано с тем, что Windows пометила файл через альтернативный поток данных, чтобы он находился в какой-то другой зоне Интернета. Вы можете обойти это одним из двух способов:

  1. Измените зоны безопасности в Internet Explorer для зоны интрасети.
  2. Используйте команду type, чтобы уничтожить альтернативный поток данных для файла. (Есть также streams.exe от Sysinternals, который может это сделать.) type thefile.bat > %temp%\newfile.bat & type %temp%\newfile.bat > thefile.bat
3

То, что вы видите, - это общая подсказка, которую Windows предоставляет всякий раз, когда вы пытаетесь в любой момент открыть загруженный файл. Что происходит, когда вы загружаете файл, он помечается флажком, который указывает, что он пришел из Интернета и, таким образом, потенциально опасен. Когда вы пытаетесь запустить такой файл, Windows проверяет, имеет ли он действительную подпись, чтобы определить, можно ли ему доверять.

Что вы можете сделать, это удалить флаг из файла, используя кнопку Разблокировать в свойствах файла, после чего Windows оставит вас в покое, когда вы попытаетесь запустить его:


Проблема в том, что пакетные файлы - это текстовые файлы, которые могут быть выполнены. Хотя текстовый файл можно подписать, он в конечном итоге добавит в файл набор двоичных данных, который для пакетного файла плох, потому что он бессмысленный и вызовет проблемы, когда интерпретатор команд попытается его выполнить. Комментирование подписи также не будет работать, потому что тогда подпись станет поврежденной.

Таким образом, подписание командного файла не будет работать.

Что вам нужно сделать, это выяснить, почему система запрашивает вас при попытке запустить его. По умолчанию Windows не запрашивает перед запуском пакетных файлов, поэтому у вас должна быть специальная политика или программа безопасности, блокирующая ее. Проверьте свою программу (ы) безопасности, чтобы увидеть, есть ли параметр проверки, для которого вы можете отключить или добавить исключение.

Также проверьте содержимое пакетного файла, чтобы убедиться, что на нем запущен исполняемый файл, который не подписан (хотя, опять же, по умолчанию Windows не запрашивает исполняемые файлы, если он не был загружен или требует повышенных привилегий, поэтому проверьте настройки).

3

Я получаю похожее сообщение, если запускаю командные файлы (или другие исполняемые файлы) из сетевого расположения. Если это так, вы можете рассмотреть возможность его перемещения на локальный диск. Другой альтернативой является использование отдельного командного файла на локальном диске для запуска файла в сети. Запускающий пакетный файл должен содержать только одну строку:

@call \\network\folder\batch.bat

Windows не будет блокировать локальный файл, и, как только этот файл запустится, он может без проблем вызвать сетевую версию.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .