PDA

Показать полную графическую версию : [решено] Мониторинг процесса в диспетчере задач и запуск его в случае отсутствия


Страниц : [1] 2 3

yago
06-12-2011, 12:12
Добрый день.

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

процесс 'iexplore.exe' с ключом '-k'

вмешательство пользователей в диспетчер задач отсутствует.

Самому знаний возможно хватило бы что бы скопировать нужное из др. скриптов и связать в один скрипт, но на это уйдет время, а его увы нет.

Iska
06-12-2011, 12:30
процесс 'iexplore.exe' с ключом '-k' »
вкупе с:
а в случае его закрытия "случайно" - его запуск. »
Зачем? И что значит — «случайно»? Как можно случайно закрыть окно без кнопки закрытия?!

RostVY
06-12-2011, 14:59
Как можно случайно закрыть окно без кнопки закрытия »
Alt+F4, <script type="text/javascript">window.close();</script>

Iska
06-12-2011, 16:06
RostVY, «Alt-F4» случайно не нажимают.

yago
06-12-2011, 23:58
слово "случайно" было взято в кавычки, что бы конкретно указать что это было вызвано пользователем, объект настройки и добавления скрипта в загрузку - ПК инфо киоск с ФЗС с загрузкой настраимового интерфейса, чувствую что в вопросе больше подозрений чем интереса в действительной помощи.
Если загрузить ПК с настраиваемым интерфейсом "iexplore.exe -k" загрузится страница эксплорера, с максимально ограниченным доступом к системе, при наличии постоянного интернет соединения конечно, но вот если страницу закрыть по ALT-F4 - останется только синий экран, и ни какой возможности загрузки эксплорера без перезахода в систему, что не есть гуд.

Вроде подробно ответил? Сомнения Развеял?

Iska
07-12-2011, 06:59
чувствую что в вопросе больше подозрений чем интереса в действительной помощи. »
yago, сожалею, но приходится. Надо хотя бы банально спросить, зачем человеку такое нужно. Ибо в моей практике «неописуемые случаи» имели место быть.

Что ж, пробуйте:
Option Explicit

Dim lngProcessID

With WScript.CreateObject("WbemScripting.SWbemLocator").ConnectServer(".", "root\cimv2")
Do
If .Get("Win32_Process").Create( _
"""C:\Program Files\Internet Explorer\iexplore.exe"" -k ""file://C:\WINDOWS\Help\Tours\htmlTour\default.htm""", _
Null, Null, lngProcessID) = 0 Then

.ExecNotificationQuery( _
"SELECT * FROM __InstanceDeletionEvent WITHIN 1 WHERE " & _
"TargetInstance ISA 'Win32_Process' AND " & _
"TargetInstance.ProcessID = '" & CStr(lngProcessID) & "'").NextEvent
Else
' Не удалось запустить процесс
Exit Do
End If
Loop
End With

WScript.Quit 0

Здесь:
"""C:\Program Files\Internet Explorer\iexplore.exe"" -k ""file://C:\WINDOWS\Help\Tours\htmlTour\default.htm"""
— путь к IE, параметр режима киоска и путь к локальному файлу html.

Вкратце: подключаемся к локальному Wbem, пытаемся запустить IE. Если запуск был удачен — ждём, пока не будет завершён процесс IE, затем запускаем новый процесс IE. И так — по кругу. Если же вдруг запуск процесса IE оказался неудачен — выходим из цикла и завершаем работу скрипта.

yago
07-12-2011, 08:34
Спасибо! Попробую сразу скажу получилост или нет.

yago
07-12-2011, 09:22
Все проверил, замечательный скрипт, Большое спасибо! В купе с ФЗС универсальное средство непотопляемости инфо киоска :)

P.S. Насколько я понимаю, скрипт создает процесс iexplore с параметрами заданными в скрипте и сопровождает его, в случае закрытия - просто "реанимирует" его - я правильно понимаю суть?

Iska
07-12-2011, 09:53
В купе с ФЗС »
Что есть «ФЗС»?

Насколько я понимаю, скрипт создает процесс iexplore с параметрами заданными в скрипте и сопровождает его, в случае закрытия - просто "реанимирует" его - я правильно понимаю суть? »
Суть — да, понимаете верно.

Если есть интерес, можете посмотреть на это обсуждение: VBScript: сценарий входа, выполнение только 1й программы (http://forum.script-coding.com/viewtopic.php?id=3437), где ставится сходная задача, только в более общем виде.

yago
07-12-2011, 10:00
ФЗС - физически замкнутая среда, строится на групповых политиках, применяются несколько параметров для ограничей действий пользователей. как то - отсутсвие возможности вызова контекстного меню, отсутствия возможности изменить параметры среды, и тд. и т.п. Никаких внешних программ, исключительно штатными средствами операционной системы. Скрипт проверил на WIN7 все пучком. Еще раз спасибо!

Iska
07-12-2011, 12:21
ФЗС - физически замкнутая среда… »
yago, спасибо, ясно.

Wu-Tang
17-12-2015, 19:59
Iska,
взял ваш скрипт, но с правкой не въеду
надо чтоб проверялось раз в 30мин запущен ли teamviewer, если нет, то запускал бы
поправил путь
Option Explicit

Dim lngProcessID

With WScript.CreateObject("WbemScripting.SWbemLocator").ConnectServer(".",

"root\cimv2")
Do
If .Get("Win32_Process").Create( _
"""C:\Program Files (x86)\TeamViewer\TeamViewer.exe"" -k

""file://C:\WINDOWS\Help\Tours\htmlTour\default.htm""", _
Null, Null, lngProcessID) = 0 Then

.ExecNotificationQuery( _
"SELECT * FROM __InstanceDeletionEvent WITHIN 1

WHERE " & _
"TargetInstance ISA 'Win32_Process' AND " & _
"TargetInstance.ProcessID = '" &

CStr(lngProcessID) & "'").NextEvent
Else
' Не удалось запустить процесс
Exit Do
End If
Loop
End With

WScript.Quit 0


но что-то не уверен, что этого достаточно.

Wu-Tang
21-12-2015, 19:54
нашел скрипт для планировщика, Петя васечкин приводил
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" _
& strComputer & "\root\cimv2")

Set colProcesses = objWMIService.ExecQuery( _
"Select Name From Win32_Process " _
& "Where Name = 'notepad.exe'")

If colProcesses.Count = 0 Then
Set objShell = Wscript.CreateObject("Wscript.Shell")
objShell.Run "notepad.exe"
End If
но не пойму как его переделать по teamviewer

Wu-Tang
23-12-2015, 23:34
господа, никто не поможет?

Iska
24-12-2015, 00:26
Wu-Tang, постоянная проблема, что люди не описывают задачу, а уже выбранное ими решение. При этом остаётся только догадываться, какая именно это задача, и строить выводы о том, насколько удачно это озвученное решение.

Вот, например, в Вашем случае я не вижу, почему бы Вам просто тупо не запускать приложение раз в тридцать минут? По выбранному и озвученному Вами решению — этого достаточно. Безо всяких скриптов. А вот что на самом деле нужно, какая в реальности стоит задача — остаётся неизвестным. То ли, действительно, раз в тридцать минут запускать приложение, то ли находить уже запущенное приложение, следить за ним и тотчас же перезапускать его при закрытии, то ли запускать приложение самим скриптом, следить и перезапускать его (проще и надёжнее в реализации).

Опишите задачу.

Wu-Tang
24-12-2015, 06:44
Iska,
хорошо, все просто.
есть задача - проверять через определенные промежутки времени запущен ли тимвьювер и если нет, то запускать.
либо из планировщика, либо само по себе.

Wu-Tang
28-12-2015, 14:12
Iska,
ну так как поможите?

Iska
28-12-2015, 16:28
Wu-Tang, ещё раз — чем Вас не устраивает обычный Планировщик: выполнять задание ежедневно, каждые 30 минут, в течение 24 часов? Это полностью решает описанную Вами задачу. Без какого-либо использования скриптов.

Fantastish
28-12-2015, 16:51
Могу предположить, что может там многократно ТМ вылезет или будет просто вылазить по верх всех окон

Iska
29-12-2015, 03:35
Fantastish, не предполагайте. Проверьте. Как это сделал я.




© OSzone.net 2001-2012