Wie signiere ich eine Windows Batch-Datei (.bat)?

17438

Ich verwende Windows 7 und wenn ich versuche, eine Batch-Datei auszuführen, heißt es: "Der Herausgeber konnte nicht überprüft werden. Möchten Sie diese Software wirklich ausführen?"

Wenn ich also versuche, es mit meinem Codesignaturzertifikat zu signieren, wird "SignTool-Fehler: Dieses Dateiformat kann nicht signiert werden, da es nicht erkannt wird."

Also bin ich zwischen einem Felsen und einem harten Ort gefangen. Gibt es eine Möglichkeit, beide Meldungen zu löschen?

screenshot

8
Schreiben Sie es erneut als PowerShell-Skript und unterschreiben Sie es. Ich habe noch nie von signierten Batch-Dateien gehört. Iszi vor 11 Jahren 1
Sie signieren keine Batchdateien. Es klingt, als würde Ihre Batchdatei etwas anderes aufrufen, das signiert werden sollte. Mark Allen vor 11 Jahren 0
Woher stammt die Aufforderung? Was ist also die Titelleiste und das Symbol? Ist es tatsächlich eine Windows-Eingabeaufforderung oder eine Eingabeaufforderung eines Sicherheitsprogramms eines Drittanbieters? Machen Sie einen Screenshot und fügen Sie ihn der Frage hinzu. Synetech vor 11 Jahren 1
http://windowsxp.mvps.org/networkfile.htm SeanC vor 11 Jahren 0
@SeanCheshire, wenn dies der Fall ist, dann ist Techturtle korrekt. Alles, was sich in einem Netzwerk befindet, wird von Windows mit einem verdächtigen Auge betrachtet. Sie müssen es entweder lokal kopieren oder den Speicherort der vertrauenswürdigen Zone hinzufügen. Synetech vor 11 Jahren 0

3 Antworten auf die Frage

4
Mark Allen

Sie signieren keine Batchdateien. Es klingt, als würde Ihre Batchdatei etwas anderes aufrufen, das signiert werden sollte.

Bearbeiten: Nachdem Sie eine Batchdatei gepostet haben, können wir feststellen, dass dies auf den Netzwerkspeicherort zurückzuführen ist. Manchmal passiert es auch, wenn Sie lediglich eine Datei von einem Netzwerkspeicherort kopieren . Im letzteren Fall ist dies darauf zurückzuführen, dass Windows die Datei über einen alternativen Datenstrom in einer anderen Internetzone markiert hat. Sie können diese zwei Arten umgehen:

  1. Ändern Sie Ihre Sicherheitszonen in Internet Explorer für die Intranetzone.
  2. Verwenden Sie den Befehl type, um den alternativen Datenstrom für die Datei zu zerstören. (Es gibt auch streams.exe von Sysinternals, das das kann.) type thefile.bat > %temp%\newfile.bat & type %temp%\newfile.bat > thefile.bat
3
Synetech

Was Sie sehen, ist eine allgemeine Aufforderung von Windows, wenn Sie versuchen, die heruntergeladene Datei jederzeit zu öffnen. Wenn Sie eine Datei herunterladen, wird sie mit einem Flag gekennzeichnet, das darauf hinweist, dass sie aus dem Internet stammt und daher potenziell gefährlich ist. Wenn Sie versuchen, eine solche Datei auszuführen, überprüft Windows, ob sie über eine gültige Signatur verfügt, um festzustellen, ob sie vertrauenswürdig ist.

Sie können das Kennzeichen aus der Datei entfernen, indem Sie in den Eigenschaften der Datei die Schaltfläche " Blockierung aufheben" verwenden. Danach lässt Windows Sie immer in Ruhe, wenn Sie versuchen, es auszuführen:

enter image description here


Das Problem ist, dass Batch-Dateien Textdateien sind, die ausgeführt werden können. Es ist zwar möglich, eine Textdatei zu signieren, aber es wird eine Reihe von Binärdaten an die Datei angehängt, die für eine Batchdatei schlecht ist, da sie unleserlich ist und Probleme verursacht, wenn der Befehlsinterpreter versucht, sie auszuführen. Das Auskommentieren der Signatur funktioniert auch nicht, da die Signatur dann beschädigt wird.

Das Signieren einer Batchdatei funktioniert daher nicht.

Was Sie tun müssen, ist herauszufinden, warum das System Sie auffordert, wenn Sie versuchen, es auszuführen. Standardmäßig fragt Windows vor dem Ausführen von Batchdateien nicht, daher müssen Sie entweder über eine spezielle Richtlinie oder ein Sicherheitsprogramm verfügen, das diese blockiert. Überprüfen Sie Ihre Sicherheitsprogramme, um zu sehen, ob eine Überprüfungseinstellung vorhanden ist, für die Sie deaktivieren oder einen Ausschluss hinzufügen können.

Überprüfen Sie auch den Inhalt der Batchdatei, um festzustellen, ob eine ausführbare Datei ausgeführt wird, die nicht signiert ist (obwohl Windows standardmäßig keine ausführbaren Dateien auffordert, es sei denn, es wurde heruntergeladen oder erfordert erhöhte Berechtigungen, überprüfen Sie Ihre Einstellungen.)

Sie sollten das Skript beenden können, bevor die Ausführung die Signatur erreicht, oder? Sparr vor 11 Jahren 0
@Sparr, ja und nein. Sie könnten vor der Signatur ein "goto: eof" einfügen. Dies würde jedoch den Hash der Datei ändern und die Signatur ungültig machen und somit die Datei als fehlerhaft / unsicher darstellen. Ich nehme an, Sie könnten die Zeile dort am Ende der Datei * haben, bevor Sie * sie signieren, und es sollte funktionieren. Interessantes Experiment zum Ausprobieren… Synetech vor 11 Jahren 0
Sie können den Typbefehl - auch für Binärdateien - verwenden, um die Markierung der Datei aufzuheben. Das mache ich die ganze Zeit. type oldfile> newfile (und dann) type newfile> oldfile führt zu der oldfile ohne den ADS-Tag. Mark Allen vor 11 Jahren 2
Hehe, schlau. Das ist keine technische Entfernung der Flagge (und ich bin nicht sicher, wie viel schneller oder bequemer sie ist als das * Eigenschaften * -Dialogfeld), aber es funktioniert. Synetech vor 11 Jahren 0
3
techturtle

I get a similar message if I run batch files (or other executables) from a network location. If this is the case, you may want to consider moving it to a local drive. Another alternative is to use a separate batch file on the local drive to launch the one on the network. The launching batch file need only have one line in it:

@call \\network\folder\batch.bat 

Windows won't balk at the local file, and once that file is running, it can call the network version without issue.

@Sosukodo, also `E:` ist ein Netzlaufwerk? Synetech vor 11 Jahren 0
Sort-of ;-) Ich betreibe einen VirtualBox Windows 7-Gast auf einem Mac-Host. Der E: ist ein freigegebener VirtualBox-Ordner. Ich wusste nicht, dass der freigegebene Ordner als vernetztes Laufwerk angesehen wird, aber wenn Sie es erwähnen, hat es Sinn gemacht. vor 11 Jahren 0