Выполнить антивирусную программу программно, используя Delphi

StackOverflow https://stackoverflow.com/questions/3292216

Вопрос

Я написал небольшое приложение для передачи файлов с использованием компонентов Indy, теперь я хочу запустить антивирусную программу при завершении передачи, чтобы проверить файлы.

Как я могу выполнить антивирусную программу, установленную на стороне клиента, когда загрузка заканчивается?

<Сильное> Обновление Мне нужно реализовать что-то похожее на Firefox при загрузке файла, а затем выполнить антивирус, установленный в машине.

Спасибо заранее.

Это было полезно?

Решение

увидеть ответ хорошего человека на мой другой вопрос.

Похоже, есть два интерфейса COM, которые вы должны захватить, один из которых здесь документирован:

IATTACHMENTEXECUTE P >.

Этот интерфейс является частью интерфейсов оболочки Windows.

Вот комментарий в источнике

/**
 * 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.
.

Я нашел еще немного реализации здесь.Функция называется AES.

Другие советы

Проверьте, как делают другие программы, такие как WinRAR.Скорее всего, это только начинает антивирусную программу с файлом или папкой, которую вы хотите сканировать в качестве параметра командной строки.Вы можете проверить руководство по вашей антивирусной программе, чтобы проверить, как это сделано.

Вы можете использовать Shellexecute или CreateProcess, Я использую Shellexecute, но я слышал, что CreateProcess лучше Если вы хотите выполнить антивирус, называемый «AntiVVV», используя SHELLAPI, сделайте это таким образом:

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top