Подождите, пока Symantec End Point DoScan.exe закончит сканирование файла - PullRequest
2 голосов
/ 14 марта 2011

Я разрабатываю приложение, которое использует загрузку файлов. Мой клиент использует Symantec End Point Protection на Windows Server.

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

Я звоню в SEP из командной строки.

Пример кода:

              String[] commands =  new String[6];
              commands[0] = "cmd";
              commands[1] = "/c";

              commands[2] = "C:\\Program Files\\Symantec\\Symantec Endpoint Protection\\DoScan.exe";
              commands[3] = "/cmdlinescan";
              commands[4] = "/ScanFile";
              commands[5] = fileName;

             Process process = Runtime.getRuntime().exec(commands);

             int exitVal = process.waitFor();

Я также сталкивался с этим, SEP генерирует ежедневный журнал для каждого отсканированного файла в.

scanResult = "C:\\Documents and Settings\\All Users\\Application Data\\"Symantec\\Symantec Endpoint Protection\\Logs\\";   

Итак, я хочу отсканировать файл.

Я поставил галочку, чтобы начать чтение файла с места. Как только он возвращает 0 из процесса

Но "int exitVal = process.waitFor();" возвращается до того, как SEP записывает журнал в файл.

Итак, SEP "DoScan.exe" вызывает поток внутренне, чтобы начать сканирование файла.

если да, пожалуйста, предложите мне альтернативу.

Любая помощь будет оценена

1 Ответ

0 голосов
/ 16 марта 2011

Я создал решение, которое работает для меня.

Здесь происходит то, что int exitVal = process.waitFor(); возвращается до того, как Symantec AV записывает результат в файл .log.

Итак, я написал цикл, который продолжает проверку на основе даты последнего изменения файла журнала.

Как только файл журнала изменяется, я читаю результаты.

...