Làm cách nào để ký một tệp Windows (.bat)?


8

Tôi đang chạy Windows 7 và khi tôi cố chạy một tệp bó, nó nói: "Nhà xuất bản không thể xác minh được. Bạn có chắc chắn muốn chạy phần mềm này không?"

Vì vậy, khi tôi cố gắng ký nó với chứng chỉ ký mã của mình, nó báo "Lỗi SignTool: Định dạng tệp này không thể được ký vì không được nhận dạng."

Vì vậy, tôi bị mắc kẹt giữa một tảng đá một nơi khó khăn. Có cách nào để loại bỏ một trong hai tin nhắn?

ảnh chụp màn hình


1
Viết lại nó dưới dạng tập lệnh PowerShell và ký tên? Bản thân tôi chưa bao giờ nghe nói về các tập tin lô đã ký.
Iszi

Bạn không ký các tập tin hàng loạt. Có vẻ như tệp bó của bạn đang gọi một cái gì đó khác cần được ký.
Mark Allen

1
Nguồn của dấu nhắc là gì? Đó là, thanh tiêu đề và biểu tượng là gì? Đây thực sự là một dấu nhắc Windows hay lời nhắc từ chương trình bảo mật của bên thứ ba? Chụp ảnh màn hình của nó và thêm nó vào câu hỏi.
Synetech


@SeanCheshire, nếu đó là trường hợp, thì techturtle là chính xác; mọi thứ trên mạng đều được Windows xem bằng con mắt khả nghi, vì vậy bạn sẽ cần sao chép cục bộ hoặc thêm vị trí vào Vùng tin cậy.
Synetech

Câu trả lời:


4

Tôi nhận được một thông báo tương tự nếu tôi chạy các tệp bó (hoặc các tệp thực thi khác) từ một vị trí mạng. Nếu đây là trường hợp, bạn có thể muốn xem xét di chuyển nó vào một ổ đĩa cục bộ. Một cách khác là sử dụng một tệp bó riêng trên ổ đĩa cục bộ để khởi chạy tệp trên mạng. Tệp bó khởi chạy chỉ cần có một dòng trong đó:

@call \\network\folder\batch.bat

Windows sẽ không chùn bước ở tệp cục bộ và một khi tệp đó đang chạy, nó có thể gọi phiên bản mạng mà không gặp sự cố.


@Sosukodo, vậy E:ổ đĩa có ánh xạ mạng không?
Synetech

Sắp xếp ;-) Tôi đang chạy máy khách VirtualBox Windows 7 trên máy chủ Mac. E: là một thư mục chia sẻ VirtualBox. Tôi không biết rằng thư mục dùng chung sẽ được coi là ổ đĩa được nối mạng nhưng khi bạn đề cập đến nó, nó có ý nghĩa.

4

Bạn không ký các tập tin hàng loạt. Có vẻ như tệp bó của bạn đang gọi một cái gì đó khác cần được ký.

Chỉnh sửa: Bây giờ bạn đã đăng một tệp bó, chúng ta có thể thấy rằng đó là do vị trí mạng. Hoặc, đôi khi điều đó sẽ xảy ra nếu bạn chỉ sao chép một tệp từ một vị trí mạng. Trong trường hợp sau, đó là vì Windows đã gắn thẻ tệp qua Luồng dữ liệu thay thế để ở một số vùng Internet khác. Bạn có thể đi xung quanh một trong hai cách sau:

  1. Thay đổi vùng bảo mật của bạn trong Internet Explorer, cho vùng Intranet.
  2. Sử dụng lệnh type để hủy luồng dữ liệu thay thế cho tệp. (Cũng có stream.exe từ Sysiternals có thể làm điều đó.) type thefile.bat > %temp%\newfile.bat & type %temp%\newfile.bat > thefile.bat

3

Những gì bạn đang thấy là một lời nhắc chung mà Windows cung cấp bất cứ khi nào bạn cố gắng mở bất kỳ thời gian nào của tệp đã được tải xuống. Điều gì xảy ra là khi bạn tải xuống một tệp, nó được gắn cờ cho biết rằng nó đến từ Internet và do đó có khả năng gây nguy hiểm. Khi bạn cố chạy một tệp như vậy, Windows sẽ kiểm tra xem nó có chữ ký hợp lệ để xác định xem nó có đáng tin hay không.

Những gì bạn có thể làm là tước cờ khỏi tệp bằng cách sử dụng nút Bỏ chặn trong thuộc tính của tệp, sau đó, Windows sẽ để bạn một mình bất cứ khi nào bạn cố chạy nó:

nhập mô tả hình ảnh ở đây


Vấn đề là các tệp bó là các tệp văn bản có thể được thực thi. Mặc dù có thể ký một tệp văn bản, nhưng cuối cùng nó sẽ nối thêm một loạt dữ liệu nhị phân vào tệp mà đối với tệp bó là xấu vì nó vô nghĩa và sẽ gây ra sự cố khi trình thông dịch lệnh cố gắng thực thi nó. Nhận xét chữ ký sẽ không hoạt động vì sau đó chữ ký bị hỏng.

Do đó, việc ký một tệp bó sẽ không hiệu quả.

Những gì bạn cần làm là tìm hiểu tại sao hệ thống lại nhắc bạn khi cố gắng chạy nó. Theo mặc định, Windows không yêu cầu trước khi chạy các tệp bó, do đó bạn phải có chính sách đặc biệt hoặc chương trình bảo mật chặn nó. Kiểm tra (các) chương trình bảo mật của bạn để xem liệu có cài đặt xác minh mà bạn có thể vô hiệu hóa hoặc thêm loại trừ không.

Đồng thời kiểm tra nội dung của tệp bó để xem liệu nó có đang chạy một tệp thực thi không được ký hay không (mặc dù vậy, theo mặc định, Windows không nhắc thực thi trừ khi được tải xuống hoặc yêu cầu các đặc quyền nâng cao, vì vậy hãy kiểm tra cài đặt của bạn).


Bạn sẽ có thể thoát khỏi tập lệnh trước khi thực hiện đạt đến chữ ký, phải không?
Sparr

@Sparr, có và không. Bạn có thể chèn goto :eofchữ ký trước chữ ký, nhưng sau đó sẽ thay đổi hàm băm của tệp và khiến chữ ký không hợp lệ và do đó tệp bị hỏng / không an toàn. Tôi cho rằng bạn có thể có dòng ở cuối tập tin trước khi ký, và nó sẽ hoạt động. Thử nghiệm thú vị để dùng thử
Synetech

2
Bạn có thể sử dụng lệnh type - ngay cả trên nhị phân - để bỏ chặn tệp. Tôi làm nó suốt. gõ oldfile> newfile (và sau đó) gõ newfile> oldfile dẫn đến oldfile mà không có thẻ ADS.
Mark Allen

Hehe, thông minh. Đó không phải là kỹ thuật tước cờ (và tôi không chắc nó nhanh hơn hay tiện lợi hơn hộp thoại Thuộc tính bao nhiêu , nhưng nó hoạt động.
Synetech

0

Bạn cũng có thể chuyển đổi tệp .bat thành tập lệnh PowerShell, signtool hỗ trợ ký các tệp này.


Điều này không cung cấp một câu trả lời cho câu hỏi. Để phê bình hoặc yêu cầu làm rõ từ một tác giả, hãy để lại nhận xét bên dưới bài đăng của họ. - Từ đánh giá
Burgi

@Burgi điều này gây tranh cãi, các tệp .bat không thể được ký trừ khi có ai đó viết SIP chuyên dụng. Giải pháp gần nhất hiện nay là tập lệnh PowerShell đã ký.
Emmanuel Bourg

Quy tắc số 42 của Fight Club là "Cách giải quyết là câu trả lời." Vì vậy, đây là một câu trả lời. (Nhưng những cái khác thì tốt hơn.)
Scott
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.