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

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - Завершение процессов кроме, определенных

Ответить
Настройки темы
VBS/WSH/JS - Завершение процессов кроме, определенных

Аватара для O L E G

Старожил


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


Конфигурация

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


Подскажите как написать скрипт,который будет закрывать все процессы кроме мною указанных.
например: которые должны работать
svchost.exe
services.exe
ctfmon.exe
explorer.exe
и тд
А все остальные закрыть!

Отправлено: 12:33, 28-03-2012

 

Ветеран


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

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


O L E G, как Вы запускаете «explorer.exe»?

Отправлено: 13:44, 02-04-2012 | #31



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для O L E G

Старожил


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

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


Код: Выделить весь код
wsh.run "Explorer.exe" или wsh.run "Explorer.exe", 0 ,True
или
Код: Выделить весь код
wsh.run "Taskkill /IM Explorer.exe /F", 0 ,True
wsh.run "Explorer.exe"

-------
Сложность программы растет до тех пор, пока не превысит способности программиста.


Отправлено: 14:06, 02-04-2012 | #32


Ветеран


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

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


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)».

К тому же, я совсем не понял, зачем снимать процесс, запускать процесс и снова снимать его. Ну, и, утверждение:
Цитата O L E G:
невозможно закрыть Explorer во 2 раз,так как он находиться в под процессе »
не верно.

Отправлено: 16:35, 02-04-2012 | #33


Аватара для O L E G

Старожил


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

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


к примеру у тебя стоит блокировка win + L, если снять процесс explorer и запустить его заново он будет по верх этой блокировки,что нам даст полное дествие над ПК

-------
Сложность программы растет до тех пор, пока не превысит способности программиста.


Отправлено: 16:40, 02-04-2012 | #34


Ветеран


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

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


Цитата O L E G:
к примеру у тебя стоит блокировка win + L, если снять процесс explorer и запустить его заново он будет по верх этой блокировки,что нам даст полное дествие над ПК »
«он будет по верх этой блокировки» — не подтверждаю.

Отправлено: 17:01, 02-04-2012 | #35


Аватара для O L E G

Старожил


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

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


я пробовал! работает)) 100% поэтому я и задался этим вопросом

-------
Сложность программы растет до тех пор, пока не превысит способности программиста.


Отправлено: 17:03, 02-04-2012 | #36


Ветеран


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

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


Значит, это не есть:
Цитата O L E G:
блокировка win + L »

Отправлено: 17:36, 02-04-2012 | #37


Аватара для O L E G

Старожил


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

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


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"

-------
Сложность программы растет до тех пор, пока не превысит способности программиста.


Отправлено: 17:43, 02-04-2012 | #38


Ветеран


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

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


Вы убрали код для запуска процесса и получения его идентификатора, а затем пытаетесь применить неинициализированную PID'ом (стало быть — нулевую) переменную «lngProcessID» для получения экземпляра процесса с последующим его закрытием.

Не удивительно, что это не работает, ибо в терминах Wbem процесс с нулевым PID'ом — это «System Idle Process» — «ожидание» системы.

Отправлено: 19:28, 02-04-2012 | #39


Аватара для O L E G

Старожил


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

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


Код: Выделить весь код
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, а можно ли его переписать,что бы открывал как отдельный процесс?не в под процессах?

-------
Сложность программы растет до тех пор, пока не превысит способности программиста.


Последний раз редактировалось O L E G, 03-04-2012 в 10:44.


Отправлено: 10:14, 03-04-2012 | #40



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - Завершение процессов кроме, определенных

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
.NET - Завершение не своих процессов на C# ldcount Программирование и базы данных 4 29-07-2013 14:19
CMD/BAT - Завершение процессов, не указанных в списке Anonymоus Скриптовые языки администрирования Windows 4 05-08-2011 10:33
Разное - Завершение нескольких процессов из CMD или программы antikiller_bm Microsoft Windows 2000/XP 3 24-05-2009 23:39
Заблокировать трафик, кроме определенных IP noleiemit Microsoft Windows NT/2000/2003 17 19-01-2009 21:51
Разное - Неожиданное завершение службы Запуск серверных процессов DCOM koresaram Microsoft Windows 2000/XP 3 25-07-2007 12:20




 
Переход