Подождите, пока Symantec End Point DoScan.exe закончит сканирование файла

Я разрабатываю приложение, которое использует загрузку файлов. Мой клиент использует 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 запишет журнал в файл.

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

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

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

1 ответ

Решение

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

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

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

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

Другие вопросы по тегам