У меня Windows 7, и когда я пытаюсь запустить командный файл, он говорит: «Не удалось проверить издателя. Вы уверены, что хотите запустить это программное обеспечение?»
Поэтому, когда я пытаюсь подписать его с помощью сертификата для подписи кода, появляется сообщение «Ошибка SignTool. Этот формат файла не может быть подписан, поскольку он не распознан».
Так что я застрял между скалой и трудным местом. Есть ли способ устранить любое сообщение?
Ответы:
Я получаю похожее сообщение, если запускаю командные файлы (или другие исполняемые файлы) из сетевого расположения. Если это так, вы можете рассмотреть возможность перемещения его на локальный диск. Другой альтернативой является использование отдельного командного файла на локальном диске для его запуска в сети. Запускающий пакетный файл должен содержать только одну строку:
Windows не будет отказываться от локального файла, и, как только этот файл будет запущен, он может без проблем вызвать сетевую версию.
источник
E:
это сетевой диск?Вы не подписываете пакетные файлы. Похоже, ваш пакетный файл вызывает что-то еще, что должно быть подписано.
Изменить: Теперь, когда вы разместили пакетный файл, мы можем видеть, что это из-за сетевого расположения. Или иногда это происходит, если вы просто копируете файл из сетевого расположения. В последнем случае это связано с тем, что Windows пометила файл через альтернативный поток данных, чтобы он находился в какой-то другой зоне Интернета. Вы можете обойти это одним из двух способов:
type thefile.bat > %temp%\newfile.bat & type %temp%\newfile.bat > thefile.bat
источник
То, что вы видите, - это общая подсказка, которую Windows предоставляет всякий раз, когда вы пытаетесь в любое время открыть загруженный файл. Что происходит, когда вы загружаете файл, он помечается флажком, который указывает, что он пришел из Интернета и поэтому потенциально опасен. Когда вы пытаетесь запустить такой файл, Windows проверяет, имеет ли он действительную подпись, чтобы определить, можно ли ему доверять.
Что вы можете сделать, это удалить флаг из файла, используя кнопку Разблокировать в свойствах файла, после чего Windows оставит вас в покое, когда вы попытаетесь запустить его:
Проблема в том, что пакетные файлы - это текстовые файлы, которые могут быть выполнены. Хотя текстовый файл можно подписать, он в конечном итоге добавит в файл набор двоичных данных, который для пакетного файла плох, потому что он бессмысленный и вызовет проблемы, когда интерпретатор команд попытается его выполнить. Комментирование подписи также не будет работать, потому что тогда подпись станет поврежденной.
Поэтому подписание командного файла не будет работать.
Что вам нужно сделать, это выяснить, почему система запрашивает вас при попытке запустить его. По умолчанию Windows не запрашивает перед запуском пакетных файлов, поэтому у вас должна быть специальная политика или программа безопасности, блокирующая ее. Проверьте ваши программы безопасности, чтобы увидеть, есть ли параметр проверки, для которого вы можете отключить или добавить исключение.
Также проверьте содержимое пакетного файла, чтобы убедиться, что на нем запущен исполняемый файл, который не подписан (хотя, опять же, по умолчанию Windows не запрашивает исполняемые файлы, если он не был загружен или не требует повышенных привилегий, поэтому проверьте настройки).
источник
goto :eof
перед подписью, но тогда это изменит хэш файла и сделает подпись недействительной и, следовательно, файл будет поврежден / небезопасен. Я полагаю, у вас может быть строка в конце файла, прежде чем подписать его, и это должно работать. Интересный эксперимент, чтобы попробовать ...Вы также можете преобразовать файл .bat в скрипт PowerShell, signtool поддерживает подпись этих файлов.
источник