indy コンポーネントを使用してファイルを転送する小さなアプリを作成しました。転送が完了したらウイルス対策プログラムを起動してファイルをチェックしたいと思います。
ダウンロードが完了したら、クライアント側にインストールされているウイルス対策プログラムを実行するにはどうすればよいですか?
更新 ファイルをダウンロードしてマシンにインストールされているウイルス対策を実行するときに、firefox に似たものを実装する必要があります。
前もって感謝します。
indy コンポーネントを使用してファイルを転送する小さなアプリを作成しました。転送が完了したらウイルス対策プログラムを起動してファイルをチェックしたいと思います。
ダウンロードが完了したら、クライアント側にインストールされているウイルス対策プログラムを実行するにはどうすればよいですか?
更新 ファイルをダウンロードしてマシンにインストールされているウイルス対策を実行するときに、firefox に似たものを実装する必要があります。
前もって感謝します。
取得する必要のあるCOMインターフェイスが2つあるようですが、そのうちの1つはここに記載されています。
このインターフェイスは、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.
Winrar など、他のプログラムがどのように動作するかを確認してください。ほとんどの場合、スキャンするファイルまたはフォルダーをコマンド ライン パラメーターとして指定してウイルス対策プログラムを起動しているだけです。ウイルス対策プログラムのマニュアルをチェックして、それがどのように行われているかを確認できます。
shellexecute または createprocess を使用できます。私は shellexecute を使用しますが、shellapi を使用して antivvv というアンチウイルスを実行する場合は、createprocess の方が優れていると聞きました。
uses ShellApi;
...
ShellExecute(Handle, 'open', 'c:\program files\antivvv.exe', nil, nil, SW_SHOWNORMAL) ;