Показать сообщение отдельно
  #4  
Старый 09.06.2012, 01:19
PRStudio PRStudio вне форума
Прохожий
 
Регистрация: 18.02.2012
Сообщения: 13
Репутация: 143
По умолчанию

Цитата:
Application.ProcessMessages
потоки
Спасибо, первый способ решил проблему, сейчас опробую и второй через создание потока.

Цитата:
Используйте для сканирования отдельный поток, тогда форма не будет подвисать. Кстати, я бы не стал сначала получать список файлов, а потом еще раз по нему идти - проще по ходу получения файлов их проверять. тогда имена файлов не будут занимать лишней памяти, и вообще, работать будет быстрее. Ежели не секрет - какой алгоритм сканирования используете?

В принципе я так и делаю - я храню в памяти только список файлов одной директории, потом память освобождаю. Потом записывается список для следующей директории и т.д.

Алгоритм довольно прост:

1) Берем начальную точку
2) От этой точки берем список всех папок (в т.ч. и вложенных)
3) Далее в цикле прогоняем каждую папку
- - Для папки получаем список файлов
- - Прогоняем полученные файлы в цикле
- - - Берем md5 хеш-сумму файла, ищем ее в базе
- - - Если в базе найден такой хеш, файлик есть вирус
- - Освобождаем память под файлы

Конечно при таком подходе зараженный файлы не отловить, а только "чистые" вирусы. Но мне пока больше и не нужно

Еще планирую по такому же плану сканировать процессы:
- Сначала перейти к файлу, запустившего процесс и проверить его
- затем получить список всех спроецированных в процесс библиотек и их отсканировать
Ответить с цитированием