Тема: VBS: Удаление процессов с условием
Необходимо:
Создать скрипт который:
"Убивает" все процессы, которые висят в памяти и не упомянуты в файле со списком имен процессов.
Прошу не кидать в меня тряпки, я в этом новичок.
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Серый форум → Общение → Windows Script Host, HTA (VBScript, JScript) → VBS: Удаление процессов с условием
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Необходимо:
Создать скрипт который:
"Убивает" все процессы, которые висят в памяти и не упомянуты в файле со списком имен процессов.
Прошу не кидать в меня тряпки, я в этом новичок.
Прошу не кидать в меня тряпки, я в этом новичок.
А тряпок нет, есть только кирпичи и гири.
Возник встречный вопрос - какие шаги были Вами сделаны на пути к решению задачи ?
Xameleon
Копаюсь в синтаксе, получилось пока только остановить процессы которые в файле, но мне нужен обратный результат...
strcomputer="."
set FSO=CreateObject("Scripting.filesystemobject")
set readfile=FSO.openTextFile("C:\users\Scriptman\kill.txt")
set wmi=GetObject("winmgmts:{impersonationlevel=impersonate}!\\" _
&strcomputer&"\root\cimv2")
do until readfile.atEndOfStream
processname=readfile.readline
set colprocesses=wmi.execquery("Select * from win32_process where name = '" _
&processname&"'")
if colprocesses.count>0 then
for each obj in colprocesses
If obj.GetOwner (Username) = 0 Then
if username="Scriptman" then
'wscript.echo "killing "&obj.name
obj.terminate()
end if
end if
next
end if
loop
Отлично ! Это уже большой шаг. У Вас в коде указан запрос
"Select * from win32_process where name = '" _
&processname&"'"
Т.е отбор по условию. Если от условия избавиться, то будут возвращаться все процессы.
"Select * from win32_process"
А дальше уже можете выбрать, что с ними делать.
Xameleon
А если вот так упростить?
List = "C:\IgnoreListProcesses_ANSI.txt"
List = vbLf & CreateObject("Scripting.FileSystemObject").OpenTextFile(List).ReadAll & vbCr
For Each Pr In GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\CIMV2").ExecQuery("Select Name from Win32_Process")
If InStr(List, vbLf & Pr.Name & vbCr) = 0 Then Pr.Terminate
Next
только оно выдает ошибку
Думаю вот так можно. Строку с уничтожением процессов я закомментировал. Кстати в список надо внести WScript.exe / CScript.exe, иначе процесс "грохнет" сам себя.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться