2013-04-18 1 views
2

경우 종료 실행 : 그러나,배치 파일, 나는 인터넷에서 배치 파일을 획득 한 존재

@for /f "tokens=5 delims= " %%i in ('netstat -ano -p tcp ^| find "127.0.0.1"') do Taskkill /F /PID %%i 

이는 Ultrasurf의 프로세스를 종료를, 무엇을 나는이 프로세스를 점검하고, 존재할 경우 종료하도록하고 싶다.

@for /f "tokens=5 delims= " %%i in ('netstat -ano -p tcp ^| find "127.0.0.1"') do shutdown /s 

이 프로세스가 실행 여부 종료 명령을 실행 :

나는 다음과 같은 노력했다. 존재하는 경우에만 실행해야합니다. 어떤 도움을 주시면 감사하겠습니다.

답변

1

배치 파일은 Ultrasurf를 죽이지 않으며 열린 TCP 포트가있는 로컬 호스트의 모든 프로세스를 종료합니다.

리소스 모니터를 실행하면 많은 서비스가 RPC 서버에 대해 열린 TCP 포트를 가지고 있음을 알 수 있습니다. 따라서 수정 된 스크립트는 for 명령이 최소한 하나의 일치 항목을 찾았 기 때문에 즉시 종료를 실행합니다.

question

tasklist /FI "IMAGENAME eq ultrasurf.exe" 2>NUL | find /I /N "ultrasurf.exe">NUL 
if "%ERRORLEVEL%"=="0" shutdown /s /f 

경고에 대한 답변 중 하나를 수정 : 검증되지 않은 코드 제안에 대한

+0

감사합니다. 그러나 Ultrasurf의 프로세스 이름은 각 버전 (u1207.exe, u1210.exe 등)에 따라 변경됩니다. 또한 EXE의 이름을 바꾸는 데 능숙한 사람이라면이 코드를 우회 할 수 있습니다. – user2296353

+0

프로세스 이름에 고정 된 접두어 또는 접미어가있는 것이 보장되면 해당 부분 문자열을 사용하여 일치 시키려고 할 수 있습니다. 늘어나는만큼 exe를 걱정하는 것은 당신이 그것에 대해 아무것도 할 수 없다는 것이 두렵다. exe의 이름 바꾸기에 대한 조치는 다음 행을 따릅니다. 1> 사용자에게 관리 권한을주지 마십시오. 2> 제한적인 그룹 정책 등을 설정하십시오. 둘 다 결정된 사용자, 특히 소프트웨어 엔지니어를 중지시킬 수 없습니다. –