2011-03-14 7 views
2

파일 업로드를 사용하는 응용 프로그램을 개발 중입니다. 내 클라이언트는 Windows Server에서 Symantec Endpoint Protection을 사용합니다.Symantec Endpoint DoScan.exe가 파일 검색을 완료 할 때까지 기다려주십시오.

그래서 샘플 코드를 사용하여 서버에 파일 업로드 여부를 확인하고 있습니다.

명령 줄을 사용하여 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(); 

은 9 월은 각 스캔 파일에 대한 일일 로그를 생성합니다.

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

그래서 여기에 파일을 스캔하고 싶습니다.

위치에 파일 읽기를 시작했는지 확인합니다. 한 번 프로세스에서 0을 반환합니다.

"int exitVal = process.waitFor();"은 SEP가 파일에 기록하기 전에 반환됩니다.

따라서 SEP "DoScan.exe"은 파일 검색을 위해 스레드를 빈번하게 호출하고 있습니까?

예, 나에게 대안을 제안하십시오.

도움이 되셨을 때

+0

당신은 그것을 알아 냈습니까? – Sridhar

+0

5 살짜리 지. 그것은 데모 용이었습니다. –

답변

0

나를 위해 적합한 해결책을 만들었습니다.

여기서, int exitVal = process.waitFor();은 Symantec AV 기록 결과가 .log 파일로 반환되기 전에 반환됩니다.

그래서 로그 파일의 마지막 수정 날짜를 기반으로 검사를 계속하는 루프를 작성했습니다.

일단 로그 파일이 수정되면 결과를 읽습니다.

+0

process.waitFor()는 의미가 무엇인지에 대한 정수 1을 반환합니다. – Sridhar

관련 문제