Показать полную графическую версию : Завершение процессов кроме, определенных
процесс MSHTA.exe -его не удалось завершить
---------------------------
Windows Script Host
---------------------------
Сценарий: C:\Documents and Settings\Admin\Рабочий стол\12.vbs
Строка: 29
Символ: 4
Ошибка: Не найден
Код: 80041002
Источник: SWbemObjectEx
---------------------------
ОК
---------------------------
arrProcesses = Array("svchost.exe", "services.exe", "ctfmon.exe", "explorer.exe", "system.exe", "winlogon.exe", "smss.exe", "csrss.exe", "lsass.exe", "mshta.exe", "ntoskrnl.exe", "wmiprvse.exe" )
ошибка была из за "mshta.exe" "wmiprvse.exe" процессов
добавил эти процессы вроде закрывается без каких либо ошибок,но мне интересно ,с этим скриптом могут возникнуть проблемы на других машинах?
Если добавить некоторое ожидание после получения PID скрипта — «mshta.exe», думаю, можно будет исключить: он используется только в начале скрипта и далее не используется. «wmiprvse.exe» — это служба самого Wbem, без неё, конечно, никак.
мне интересно ,с этим скриптом могут возникнуть проблемы на других машинах? »
Со скриптом — вряд ли, со списком «arrProcesses» — могут.
А какова была конечная Ваша цель, и почему Вы не захотели использовать политики ограниченного использования программ?
Нашел один косяк, после запуска скрипта те проргаммы что не в списке не возможно открыть, они автоматически закрываются,такую чувство что скрипт в процессах висит и закрывает приложения,в чем проблема может быть
Как и ранее я хотел сделать программу которая меняет данные ресстра и удалеет банеры при Включенной системе,
1. я сделал что бы скрипт запускался по нажатию Win+F1
2. сделал что скрипт запускается через пол часа как заставка, что мне дает 100% гарантию закрытия всех процессов и Explorer и винлокеров и восстановить его заново Explorer.
3. скрипт даже работает по верх Win+L блокировки системы,как бы запускает 2 рабочий стола по верх Блокировщика,что дает возможность изменить реестр и так далее,от вирусов и локеров при активной системы
Теперь мне все данные надо соединить в один фунциональный файл и все перепроверить
Нашел один косяк, после запуска скрипта те проргаммы что не в списке не возможно открыть, они автоматически закрываются,такую чувство что скрипт в процессах висит и закрывает приложения,в чем проблема может быть »
Это не косяк, и не проблема, а именно то, что Вы просили (http://forum.oszone.net/post-1888426.html#post1888426).
Если Вам сие не нужно — удалите эту часть:
Set objSWbemEventSource = objSWbemServicesEx.ExecNotificationQuery( _
"SELECT * FROM __InstanceCreationEvent WITHIN 1 WHERE TargetInstance ISA 'Win32_Process'")
Do
With objSWbemEventSource.NextEvent().TargetInstance
If Not IsProcessEnabled(arrProcesses, .Name) Then
If .Terminate() = 0 Then
'WScript.Echo .Name, "Terminate"
End If
End If
End With
Loop
скрипта.
что мне дает 100% гарантию закрытия всех процессов »
Не даёт.
Не правильно избяснил мысль,не всех процессов,а тех что не всписке.
1.Заблокировал винлокер систему не возможно что либо запустить
2. мой скрипт через определенное время срабатывает,блокирует полностью автозапуск, исправляет Winlogon,Police и тд
3. Закрывает процессы что не всписке и Explorer то же,открывает его заново,тем самым уже без винлокера и у нас есть доступ к реестру и остальным данных
4. даже если мы системы перезагрузим,у нас будет всеравно заблокирован автозапуск и почишены ветви,тем самым неоткуда будет локеру запуститься
Я сталкивался с такими случаями инфекций:
* служба, в свойствах которой указана немедленная перезагрузка ОС в случае её завершения;
* несколько процессов, каждый из которых следит за наличием остальных и, в случае их отсутствия — немедленно их запускает и восстанавливает пути и методы их запуска.
Потому вывод: лучший способ чистить ОС — чистить её не из-под неё самой.
Думаю, если по сидеть по думать, то все таки перехитрить можно Локеров
Или с помошью Безопасности Заблокировать доступ к веткам, откуда грузиться локер,закрыть процессы, тем самым он незапуститься, а пути в реестре уже не найдет
O L E G, для одного, конкретного, вируса практически всегда можно подобрать набор определённых действий, ведущих к искомой цели.
вопрос, но не по этой теме, скрипт запускается как скрин сейвер через определеноое время,он закрывает Explorer и заново его открывает. Проблема в чем! невозможно закрыть Explorer во 2 раз,так как он находиться в под процессе как его можно закрыть
До wscript.exe, есть еще один процессе но я его не добавил в скрин
O L E G, как Вы запускаете «explorer.exe»?
wsh.run "Explorer.exe" или wsh.run "Explorer.exe", 0 ,True
или
wsh.run "Taskkill /IM Explorer.exe /F", 0 ,True
wsh.run "Explorer.exe"
O L E G, вот Вам пример для Блокнота:
Option Explicit
Dim strProcess
Dim strComputer
Dim objSWbemLocator
Dim objSWbemServicesEx
Dim lngProcessID
strProcess = "notepad.exe"
strComputer = "."
Set objSWbemLocator = WScript.CreateObject("WbemScripting.SWbemLocator")
Set objSWbemServicesEx = objSWbemLocator.ConnectServer(strComputer, "root\cimv2")
If objSWbemServicesEx.Get("Win32_Process").Create(strProcess, Null, Nothing, lngProcessID) = 0 Then
WScript.Echo "Process [" & strProcess & "] create successfully, Process ID is [" & lngProcessID & "]."
WScript.Sleep 3000
If objSWbemServicesEx.Get("Win32_Process.Handle='" & CStr(lngProcessID) & "'").Terminate() = 0 Then
WScript.Echo "Process [" & strProcess & "], Process ID [" & lngProcessID & "] terminate successfully."
Else
WScript.Echo "Can't terminate process [" & strProcess & "], Process ID [" & lngProcessID & "]."
End If
Else
WScript.Echo "Can't create process [" & strProcess & "]."
End If
Set objSWbemServicesEx = Nothing
Set objSWbemLocator = Nothing
WScript.Quit 0
Пытаемся запустить Блокнот, в случае успеха ждём три секунды, пытаемся закрыть тот экземпляр Блокнота, который запустили.
В случае же Проводника не всё так однозначно. Во-первых, процесс Проводника может существовать как в единственном экземпляре, так и в двух — когда настройками указано разделять процессы Проводника «Рабочего стола» и папок (вторичные входы здесь не рассматриваем). Во-вторых, если просто попытаться завершить процесс «Рабочего стола» Проводника — «Программа входа в систему Windows NT» (winlogon.exe) его попросту перезапустит (справедливо, по крайней мере для WIndows XP). Отменить подобное поведение можно, указав ненулевое значение «Reason» при вызове метода «.Terminate(Reason)».
К тому же, я совсем не понял, зачем снимать процесс, запускать процесс и снова снимать его. Ну, и, утверждение:
невозможно закрыть Explorer во 2 раз,так как он находиться в под процессе »
не верно.
к примеру у тебя стоит блокировка win + L, если снять процесс explorer и запустить его заново он будет по верх этой блокировки,что нам даст полное дествие над ПК
к примеру у тебя стоит блокировка win + L, если снять процесс explorer и запустить его заново он будет по верх этой блокировки,что нам даст полное дествие над ПК »
«он будет по верх этой блокировки» — не подтверждаю.
я пробовал! работает)) 100% поэтому я и задался этим вопросом
Значит, это не есть:
блокировка win + L »
Iska, а вот с этим скриптом что ты мне дал на примере Блокнотапо верх Блокировки не вылазиет, пытался изменить но выдает ошибку
---------------------------
Windows Script Host
---------------------------
Сценарий: C:\Documents and Settings\Admin\Рабочий стол\cmd\vbs\Программа KeyRepair\unlock\служба восстановления реестра\запуск и завершение процесса\Копия 1.vbs
Строка: 24
Символ: 2
Ошибка: Не найден
Код: 80041002
Источник: SWbemServicesEx
---------------------------
ОК
---------------------------
оставлял только закрытие процесса.
Option Explicit
Dim strProcess
Dim strComputer
Dim objSWbemLocator
Dim objSWbemServicesEx
Dim lngProcessID
strProcess = "explorer.exe"
Set objSWbemLocator = WScript.CreateObject("WbemScripting.SWbemLocator")
Set objSWbemServicesEx = objSWbemLocator.ConnectServer(strComputer, "root\cimv2")
WScript.Sleep 3000
If objSWbemServicesEx.Get("Win32_Process.Handle='" & CStr(lngProcessID) & "'").Terminate() = 0 Then
Else
WScript.Echo "Can't terminate process [" & strProcess & "], Process ID [" & lngProcessID & "]."
End If
WScript.Echo "Can't create process [" & strProcess & "]."
Set objSWbemServicesEx = Nothing
Set objSWbemLocator = Nothing
WScript.Quit 0
а открывал по своему
wsh.run "Explorer.exe"
Вы убрали код для запуска процесса и получения его идентификатора, а затем пытаетесь применить неинициализированную PID'ом (стало быть — нулевую) переменную «lngProcessID» для получения экземпляра процесса с последующим его закрытием.
Не удивительно, что это не работает, ибо в терминах Wbem процесс с нулевым PID'ом — это «System Idle Process» — «ожидание» системы.
Option Explicit
Dim strProcess
Dim strComputer
Dim objSWbemLocator
Dim objSWbemServicesEx
Dim lngProcessID
strProcess = "Explorer.exe"
strComputer = "."
Set objSWbemLocator = WScript.CreateObject("WbemScripting.SWbemLocator")
Set objSWbemServicesEx = objSWbemLocator.ConnectServer(strComputer, "root\cimv2")
If objSWbemServicesEx.Get("Win32_Process").Create(strProcess, Null, Nothing, lngProcessID) = 0 Then
WScript.Echo "Process [" & strProcess & "] create successfully, Process ID is [" & lngProcessID & "]."
WScript.Sleep 3000
If objSWbemServicesEx.Get("Win32_Process.Handle='" & CStr(lngProcessID) & "'").Terminate() = 0 Then
WScript.Echo "Process [" & strProcess & "], Process ID [" & lngProcessID & "] terminate successfully."
Else
WScript.Echo "Can't terminate process [" & strProcess & "], Process ID [" & lngProcessID & "]."
End If
Else
WScript.Echo "Can't create process [" & strProcess & "]."
End If
Set objSWbemServicesEx = Nothing
Set objSWbemLocator = Nothing
WScript.Quit 0
Данный скрипт открывает процесс в подпроцессе Winlogon, а можно ли его переписать,что бы открывал как отдельный процесс?не в под процессах?
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.