Bagaimana cara menandatangani file batch Windows (.bat)?

8

Saya menjalankan Windows 7 dan ketika saya mencoba menjalankan file batch, dikatakan, "Penerbit tidak dapat diverifikasi. Apakah Anda yakin ingin menjalankan perangkat lunak ini?"

Jadi ketika saya mencoba untuk menandatanganinya dengan sertifikat penandatanganan kode saya, dikatakan "Kesalahan SignTool: Format file ini tidak dapat ditandatangani karena tidak dikenali."

Jadi saya terjebak di antara batu dan tempat yang sulit. Apakah ada cara untuk menghilangkan pesan?

tangkapan layar


sumber
1
Tulis ulang sebagai skrip PowerShell, dan tandatangani? Saya belum pernah mendengar tentang file batch yang ditandatangani, sendiri.
Iszi
Anda tidak menandatangani file batch. Kedengarannya seperti file batch Anda memanggil sesuatu yang lain yang harus ditandatangani.
Mark Allen
1
Apa sumber prompt? Artinya, apa judul-bar dan ikonnya? Apakah ini prompt Windows atau prompt dari program keamanan pihak ketiga? Ambil tangkapan layarnya dan tambahkan ke pertanyaan.
Synetech
@SeanCheshire, jika itu masalahnya, maka techturtle benar; segala sesuatu di jaringan dilihat dengan mata mencurigakan oleh Windows, jadi Anda harus menyalinnya secara lokal atau menambahkan lokasi ke Zona Tepercaya.
Synetech

Jawaban:

4

Saya mendapatkan pesan serupa jika saya menjalankan file batch (atau file executable lainnya) dari lokasi jaringan. Jika ini masalahnya, Anda mungkin ingin mempertimbangkan untuk memindahkannya ke drive lokal. Alternatif lain adalah dengan menggunakan file batch terpisah di drive lokal untuk meluncurkan yang ada di jaringan. File batch peluncuran hanya perlu memiliki satu baris di dalamnya:

@call \\network\folder\batch.bat

Windows tidak akan menolak pada file lokal, dan begitu file itu berjalan, ia dapat memanggil versi jaringan tanpa masalah.

techturtle
sumber
@Sosukodo, jadi E:apakah drive yang dipetakan jaringan?
Synetech
Sort-of ;-) Saya menjalankan tamu VirtualBox Windows 7 pada host Mac. E: adalah folder bersama VirtualBox. Saya tidak tahu bahwa folder bersama akan dianggap sebagai drive jaringan tetapi ketika Anda menyebutkannya, itu masuk akal.
4

Anda tidak menandatangani file batch. Kedengarannya seperti file batch Anda memanggil sesuatu yang lain yang harus ditandatangani.

Sunting: Sekarang Anda telah memposting file batch, kita dapat melihat bahwa itu karena lokasi jaringan. Atau, kadang-kadang itu akan terjadi jika Anda hanya menyalin file dari lokasi jaringan. Dalam kasus terakhir, itu karena Windows telah menandai file melalui Aliran Data Alternatif untuk berada di beberapa zona Internet lainnya. Anda dapat menyiasati ini dengan satu dari dua cara:

  1. Ubah zona keamanan Anda di Internet Explorer, untuk zona Intranet.
  2. Gunakan perintah ketik untuk menghancurkan Aliran Data Alternatif untuk file. (Ada juga streams.exe dari Sysinternals yang dapat melakukannya.) type thefile.bat > %temp%\newfile.bat & type %temp%\newfile.bat > thefile.bat
Mark Allen
sumber
3

Apa yang Anda lihat adalah perintah umum yang disediakan oleh Windows setiap kali Anda mencoba membuka setiap saat file yang telah diunduh. Apa yang terjadi adalah ketika Anda mengunduh file, itu ditandai dengan bendera yang menunjukkan bahwa itu berasal dari Internet dan karenanya berpotensi berbahaya. Ketika Anda mencoba menjalankan file seperti itu, Windows memeriksa untuk melihat apakah itu memiliki tanda tangan yang valid untuk menentukan apakah itu dapat dipercaya.

Apa yang dapat Anda lakukan adalah menghapus flag dari file dengan menggunakan tombol Unblock di properti file, setelah itu, Windows akan meninggalkan Anda sendirian setiap kali Anda mencoba menjalankannya:

masukkan deskripsi gambar di sini


Masalahnya adalah bahwa file batch adalah file teks yang dapat dieksekusi. Meskipun dimungkinkan untuk menandatangani file teks, pada akhirnya akan menambahkan sekelompok data biner ke file yang untuk file batch buruk karena bersifat omong kosong dan akan menyebabkan masalah ketika penerjemah perintah mencoba untuk menjalankannya. Mengomentari tanda tangan tidak akan berhasil karena kemudian tanda tangan menjadi rusak.

Oleh karena itu, menandatangani file batch tidak akan berfungsi.

Yang perlu Anda lakukan adalah mencari tahu mengapa sistem meminta Anda ketika mencoba menjalankannya. Secara default, Windows tidak meminta sebelum menjalankan file batch, jadi Anda harus memiliki kebijakan khusus atau program keamanan yang memblokirnya. Periksa program keamanan Anda untuk melihat apakah ada pengaturan verifikasi yang dapat Anda nonaktifkan atau tambahkan pengecualiannya.

Juga periksa konten file batch untuk melihat apakah file tersebut menjalankan file yang dapat dieksekusi yang tidak ditandatangani (meskipun lagi, secara default, Windows tidak meminta file yang dapat dieksekusi kecuali jika file tersebut diunduh atau memerlukan hak yang lebih tinggi, jadi periksa pengaturan Anda).

Synetech
sumber
Anda harus dapat keluar dari skrip sebelum eksekusi mencapai tanda tangan, bukan?
Sparr
@Parr, ya dan tidak. Anda bisa memasukkan goto :eofsebelum tanda tangan, tetapi kemudian itu akan mengubah hash file dan membuat tanda tangan tidak valid dan dengan demikian file tersebut rusak / tidak aman. Saya kira Anda bisa memiliki garis di sana di akhir file sebelum menandatanganinya, dan itu akan berhasil. Percobaan yang menarik untuk dicoba ...
Synetech
2
Anda dapat menggunakan perintah type - bahkan pada binari - untuk membatalkan penghapusan file. Saya selalu melakukannya. ketik oldfile> newfile (dan kemudian) ketik newfile> oldfile menghasilkan file lama tanpa tag ADS.
Mark Allen
Hehe, pintar. Itu tidak secara teknis mengupas bendera (dan saya tidak yakin seberapa cepat atau lebih nyaman daripada dialog Properties , tetapi berfungsi.
Synetech
0

Anda juga dapat mengonversi file .bat menjadi skrip PowerShell, signtool mendukung penandatanganan file-file ini.

Emmanuel Bourg
sumber
Ini tidak memberikan jawaban untuk pertanyaan itu. Untuk mengkritik atau meminta klarifikasi dari penulis, tinggalkan komentar di bawah posting mereka. - Dari Ulasan
Burgi
@ Burgi ini masih bisa diperdebatkan, file .bat tidak dapat ditandatangani kecuali seseorang menulis SIP khusus. Solusi terdekat untuk saat ini adalah skrip PowerShell yang ditandatangani.
Emmanuel Bourg
Aturan # 42 dari Fight Club adalah "Solusi adalah jawaban." Jadi ini jawabannya. (Tapi yang lain lebih baik.)
Scott