Цитата:
Application.ProcessMessages
потоки
|
Спасибо, первый способ решил проблему, сейчас опробую и второй через создание потока.
Цитата:
Используйте для сканирования отдельный поток, тогда форма не будет подвисать. Кстати, я бы не стал сначала получать список файлов, а потом еще раз по нему идти - проще по ходу получения файлов их проверять. тогда имена файлов не будут занимать лишней памяти, и вообще, работать будет быстрее. Ежели не секрет - какой алгоритм сканирования используете?
|
В принципе я так и делаю - я храню в памяти только список файлов одной директории, потом память освобождаю. Потом записывается список для следующей директории и т.д.
Алгоритм довольно прост:
1) Берем начальную точку
2) От этой точки берем список всех папок (в т.ч. и вложенных)
3) Далее в цикле прогоняем каждую папку
- - Для папки получаем список файлов
- - Прогоняем полученные файлы в цикле
- - - Берем md5 хеш-сумму файла, ищем ее в базе
- - - Если в базе найден такой хеш, файлик есть вирус
- - Освобождаем память под файлы
Конечно при таком подходе зараженный файлы не отловить, а только "чистые" вирусы. Но мне пока больше и не нужно
Еще планирую по такому же плану сканировать процессы:
- Сначала перейти к файлу, запустившего процесс и проверить его
- затем получить список всех спроецированных в процесс библиотек и их отсканировать