2010-10-31 22 views
7

Tôi đang chạy một tập lệnh thử nghiệm từ tập tin thực thi.Cách ngăn chặn hộp thông báo bật lên lỗi cho chương trình không thành công (.exe) khi chạy tập tin batch

Bởi vì nó được kiểm tra, các chương trình dự kiến ​​sẽ thất bại một lần trong một thời gian. Nó là tập tin miễn là mã lỗi được trả về vì vậy tôi có thể tiếp tục và đánh dấu thử nghiệm cụ thể là không thành công.

Tuy nhiên có hành vi rất khó chịu của các file thực thi dưới Microsoft Windows - nếu có điều gì không nó pop-up cửa sổ như:

Ứng dụng này đã thất bại trong việc bắt đầu vì foo.dll không được tìm thấy, cài đặt lại ứng dụng có thể khắc phục vấn đề

<OK>

Hoặc thậm chí tốt hơn:

Các hướng dẫn tại "..." tham chiếu đến bộ nhớ tại "..." ..

Bấm vào OK để chấm dứt chương trình
Bấm vào CANCEL để gỡ lỗi chương trình

Kết quả được biết đến - các khối thực thi tập lệnh cho đến khi ai đó nhấn nút "Ok". Và khi chúng ta nói về các kịch bản tự động có thể chạy tự động vào ban đêm trong một số máy ảo không đầu, nó có thể rất có vấn đề.

đơn giản cách để ngăn chặn hành vi như vậy và chỉ cần thực hiện một ứng dụng để thoát với mã thất bại - mà không thay đổi mã của chương trình riêng của mình?

Điều này có thể thực hiện được không?

Trả lời

4

Câu trả lời là như sau: Bạn cần tắt WER.

đơn giản mô tả cho điều này tôi tìm thấy ở http://www.noktec.be/archives/259

Simply (ON XP): Nhấp chuột phải vào My Computer> Advanced> Báo cáo lỗi> Disable

Voila - chương trình sụp đổ âm thầm!

Điều này không giải quyết được vấn đề khi DLL bị thiếu, nhưng đây là trường hợp hiếm hoi và điều này là đủ tốt đối với tôi.

0

có thể. Chúng tôi đã từng sử dụng sản phẩm Rational Robot của IBM có thể giám sát màn hình cho các mục cụ thể và nếu được tìm thấy, hãy gửi các lần nhấn phím đến các cửa sổ và các thứ khác.

Chúng tôi thực sự đã sử dụng nó để kiểm tra hệ thống và đơn vị hoàn toàn tự động, giống như bạn đang cố gắng làm.

Bây giờ tôi nghĩ rằng Robot đã trải qua một vài thay đổi tên nên khó có thể tìm thấy nhưng there it is, ngay trên trang web của IBM và với bản dùng thử miễn phí cho bạn. Nó không phải là giá rẻ, đồng hồ tại một smidgeon dưới USD5,000 nhưng nó giá trị nó cho chúng tôi.

Ngoài ra còn có TestComplete nơi bạn có thể nhận được giấy phép chỉ với 1.000 đô la Mỹ - đề xuất "Kiểm tra hộp đen - Kiểm tra chức năng của bất kỳ ứng dụng Windows nào" là một trong các tính năng của nó và cũng có bản demo có thể tải xuống để xem phù hợp trước khi mua.

Tuy nhiên, bạn có thể tìm thấy một sản phẩm khác để thực hiện cùng một loại điều.

Ban đầu tôi nghĩ về Expect nhưng ActiveState dường như tập trung vào các ứng dụng giao diện điều khiển giúp tôi tin rằng nó có thể không hoạt động tốt.

Tùy chọn duy nhất khác mà tôi có thể đề xuất là viết chương trình của riêng bạn trong VBScript. Tôi đã thực hiện điều này trước khi tự động khởi động nhiều tiến trình (đăng nhập để làm việc VPN, bắt đầu gửi thư, đăng nhập và vv) để tôi có thể thiết lập đầy đủ với một mouseclick thay vì phải bắt đầu mọi thứ theo cách thủ công.

Bạn có thể sử dụng AppActivate để đưa cửa sổ lên nền trước và SendKeys để gửi các phím bấm tùy ý cho nó sau đó. Có thể bạn có thể cobble với nhau một cái gì đó từ đó nếu bạn muốn có một giải pháp rẻ hơn.

+1

Tôi biết nó ** là ** có thể như tôi biết rằng khi tôi bắt đầu quá trình từ vỏ Cygwin nó không "pop-up" công cụ nhưng âm thầm chết. Vấn đề là tôi không muốn sử dụng vỏ Cygwin cho mục đích đó. Và tất nhiên để mua sản phẩm XXXX $ mà nhấp chuột cho tôi. – Artyom

2

Bạn có thể chặn AV và như vậy hiển thị hộp thoại bằng cách chạy ứng dụng của bạn hoặc tập lệnh (công cụ tập lệnh, như cscript.exe), trong trình gỡ lỗi.

Sử dụng Gflags.exe hoặc sửa đổi sổ đăng ký trực tiếp và đặt Tùy chọn thực thi tệp hình ảnh cho hình ảnh được đề cập. Xem chi tiết article này để biết chi tiết về cách sử dụng các khóa registry thích hợp. Bạn có thể thiết lập nó bằng cách sử dụng một dòng lệnh debugger như "C: \ Debuggers \ ntsd.exe -g -G -c'command '", tại đây bạn có thể truyền các lệnh để bỏ qua một số kiểu ngoại lệ nhất định trong đối số -c "commmand". Điều này có hiệu quả sẽ cung cấp cho bạn một công cụ để ngăn chặn các hộp thoại tương tác như là kết quả của ngoại lệ như AV, và sẽ cho phép quá trình tiếp tục (có lẽ để kết thúc ngay lập tức sau khi ngoại lệ đã xảy ra).

This bài viết giải thích các lệnh bạn có thể sử dụng để kiểm soát ngoại lệ và sự kiện từ việc gỡ lỗi trình gỡ rối.

Cờ -g và -G đảm bảo rằng quy trình sẽ không tự động xâm nhập vào trình gỡ lỗi trong quá trình bắt đầu và kết thúc quá trình. Bạn sẽ phải chơi với các tùy chọn loại trừ ngoại lệ khác nhau để đảm bảo rằng bạn 'ăn' tất cả các cơ hội đầu tiên và thứ hai có thể ngoại trừ có thể gây ra quá trình đột nhập vào trình gỡ rối.

Ngoài ra, nếu bạn có thể chịu đựng được một quá trình được chia thành trình gỡ lỗi (như bị mắc kẹt khi hiển thị hộp thoại), có lẽ đó sẽ là một lựa chọn tốt hơn tổng thể. Bạn có thể đánh giá từng lần gỡ lỗi trong chế độ hàng loạt sau đó và quyết định lỗi nào bạn quan tâm để khắc phục.

Các vấn đề liên quan