2010-07-20 16 views
5

Tôi đã viết một ứng dụng nhỏ để chuyển tệp bằng các thành phần tạm thời, bây giờ tôi muốn bắt đầu chương trình chống vi-rút khi quá trình chuyển hoàn tất để kiểm tra tệp.Thực hiện chương trình chống vi-rút lập trình bằng delphi

cách tôi có thể thực thi chương trình chống vi-rút được cài đặt ở phía máy khách, khi tải xuống hoàn tất?

CẬP NHẬT Tôi cần triển khai thực hiện điều gì đó tương tự như firefox khi tải xuống tệp và sau đó thực thi chương trình chống vi-rút được cài đặt trong máy.

cảm ơn trước.

+2

Đừng chương trình chống virus hầu hết treo vào hệ thống tập tin và phát hiện tập tin mới không? –

+0

Bạn đang hỏi cách làm cho một ứng dụng khởi động tự động trên máy tính của người dùng khác (không phải của bạn)? Bạn đang cố gắng thực hiện một dịch vụ? Bạn đã viết một chương trình chống virus hoặc bạn muốn làm cho chương trình chống virus quét chương trình của bạn mà không phải là một chương trình chống virus? Tôi bị bối rối. –

+0

@Warren P, tôi đã cập nhật câu hỏi của mình. chỉ cần tôi quét một tập tin bằng cách sử dụng antivirus đã cài đặt khi ứng dụng khách của tôi hoàn thành việc tải xuống. – Salvador

Trả lời

7

See the nice person's answer to my other question.

Hình như có hai giao diện COM bạn nên grabbing, một trong số đó được ghi lại ở đây:

IAttachmentExecute

Giao diện này là một phần của giao diện trình bao cửa sổ.

đây là bài bình luận trong nguồn

/** 
* Code overview 
* 
* Download scanner attempts to make use of one of two different virus 
* scanning interfaces available on Windows - IOfficeAntiVirus (Windows 
* 95/NT 4 and IE 5) and IAttachmentExecute (XPSP2 and up). The latter 
* interface supports calling IOfficeAntiVirus internally, while also 
* adding support for XPSP2+ ADS forks which define security related 
* prompting on downloaded content. 
* 
* Both interfaces are synchronous and can take a while, so it is not a 
* good idea to call either from the main thread. Some antivirus scanners can 
* take a long time to scan or the call might block while the scanner shows 
* its UI so if the user were to download many files that finished around the 
* same time, they would have to wait a while if the scanning were done on 
* exactly one other thread. Since the overhead of creating a thread is 
* relatively small compared to the time it takes to download a file and scan 
* it, a new thread is spawned for each download that is to be scanned. Since 
* most of the mozilla codebase is not threadsafe, all the information needed 
* for the scanner is gathered in the main thread in nsDownloadScanner::Scan::Start. 
* The only function of nsDownloadScanner::Scan which is invoked on another 
* thread is DoScan. 

I found some more implementation information here. The feature is called AES.

+1

Nguồn C++ cho biết Firefox hoạt động như thế nào tại http://mxr.mozilla.org/mozilla1.9.1/source/toolkit/components/downloads/src/nsDownloadScanner.cpp – glob

2

Kiểm tra xem các chương trình khác làm như thế nào, như Winrar. Nhiều khả năng nó chỉ là bắt đầu chương trình chống virus với các tập tin hoặc thư mục bạn muốn quét như là một tham số dòng lệnh. Bạn có thể kiểm tra hướng dẫn của chương trình chống vi-rút của bạn để kiểm tra xem nó được thực hiện như thế nào.

0

bạn có thể sử dụng ShellExecute hoặc CreateProcess, tôi sử dụng ShellExecute nhưng tôi đã CreateProcess nghe là tốt hơn nếu bạn muốn thực hiện một trình antivirus được gọi là nói antivvv sử dụng shellapi làm điều đó theo cách này:

uses ShellApi; 
... 
ShellExecute(Handle, 'open', 'c:\program files\antivvv.exe', nil, nil, SW_SHOWNORMAL) ; 
+2

Tại sao điều này lại bị giảm giá? –

+0

Tôi không phải là một, nhưng có lẽ bởi vì nó không làm bất cứ điều gì để làm cho AV để kiểm tra một tập tin. –

+1

Điều đó chỉ phụ thuộc vào tùy chọn dòng lệnh của chương trình chống vi-rút. -1 có vẻ khắc nghiệt. – Tobiasopdenbrouw

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