Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Старожил


Сообщения: 415
Благодарности: 257

Профиль | Отправить PM | Цитировать


O L E G, вот кстати, усовершенствованный вариант скрипта по ссылке ferget, но без WMIC:
Код: Выделить весь код
@Echo Off
:: Завершает не указанные в "белом списке" процессы
:: Anonymous, 2011
SetLocal EnableDelayedExpansion EnableExtensions

:: Файл со списком разрешённых процессов
Set WhitelistFile=%~sdp0whitelist.txt


:: Получение PID своего процесса
Set WinTitle=%Random%%Random%
Title %WinTitle%
For /F "tokens=2 skip=2 delims=," %%P In ('tasklist /FI "WINDOWTITLE eq %WinTitle%" /FO CSV') Do (Set MyPID=%%~P)
Title %~n0

:: Чтение файла со списком разрешённых процессов
If Exist "%WhitelistFile%" (
For /F "tokens=*" %%w In (%WhitelistFile%) Do (Set WhiteList=%%w:!WhiteList!)
) Else (
Set WhiteList=explorer.exe:csrss.exe:ctfmon.exe:lsass.exe:services.exe:smss.exe:svchost.exe:tasklist.exe:taskmgr.exe:winlogon.exe:wmiprvse.exe:
)

:: Получение списка процессов (без дублей)
For /F "tokens=1 skip=5 delims=," %%p In ('tasklist /FO CSV') Do (Echo :!ProcList!|Find /I ":%%~p:">nul||Set ProcList=%%~p:!ProcList!)

:: Сравнение списков
:Compare
For /F "tokens=1,* delims=:" %%C In ("!ProcList!") Do (
	If Not "%%C"=="" (
		Echo :!WhiteList!|Find /I ":%%C:">nul||Call :Kill "%%C"
		Set ProcList=%%D
		GoTo Compare
	)
)
Exit

:: Завершение процессов
:Kill
If "%~1"=="cmd.exe" (
	TaskKill /F /FI "PID ne %MyPID%" /FI "IMAGENAME eq cmd.exe"
) Else (
	TaskKill /F /IM "%~1"
)
Exit /B
Это сообщение посчитали полезным следующие участники:

Отправлено: 13:32, 28-03-2012 | #3