Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Имитация работы пользователя, закрытие нежелательных процессов. (http://forum.oszone.net/showthread.php?t=226943)

vlad20 03-02-2012 10:05 1850653

Имитация работы пользователя, закрытие нежелательных процессов.
 
Привет, подскажите пожалуйста что-то, что решит подобную задачу. Необходимо:
1) Выгрузить все процессы в текстовый файл (единовременно для анализа или чтобы была возможность настройки при запуске-выгружать/не выгружать)
2) Если запустился какой-то процесс, отличный от того, что есть в текстовом файле, имитировать действия пользователя-открыть документ MS Word или любое приложение находящееся свёрнутое в трее (чтобы была возможность выбора какое приложение развернуть, задается имя исполняемого файла, к примеру winword.exe).
3) Вести лог, какой процесс был запущен, ДДММГГГГ Имя процесса.
Большое спасибо.

Anonymоus 03-02-2012 10:39 1850677

Если вас устроит решение (или по крайней мере, подсказка, в какую сторону смотреть) на CMD/BAT, то:
1) tasklist /FO CSV>outfile.txt - дамп процессов в виде, удобном для последущей обработки.
2) На основании нижеприведенного кода соорудить мониторилку процессов, запускающуюся с некой периодичностью, скажем, раз в пять секунд и проверяющую запущенные процессы на соответствие эталону.
Показать код
Код:

@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:VistaDrv.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


"Имитировать действия пользователя" с помощью nircmd от nirsoft (фокус на свернутом окне и прочее)
3) Реализовать внесение обнаруженных изменений в лог той же мониторилкой.


Время: 18:34.

Время: 18:34.
© OSzone.net 2001-