Войти

Показать полную графическую версию : [решено] Слежение за приложением на vbs


Viton-Zizu
13-02-2012, 08:27
Ребят, подскажите пожалуйста, нужен скрипт на vbs чтобы висел запущенным и смотрел за одним приложением, если это приложение закрыто, сразу его запускал! нужен для того чтобы пользователи не вырубали местный чат)
Писал подобное в батнике, потом паковал прогой в EXE , антивирь начали злостно ругаться и удаляли его, вот пробую на vbs написать)
Подскажите если есть готовый код если нет, то у меня ошибка вылазиет!
Option Explicit
Dim WshShell
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run "C:\Program Files\папка\приложение.exe"
Set WshShell = Nothing
вроде должен просто запустить приложение, а выводит ошибку! "не удаётся найти указанный файл" строка 4 символ 1...
подскажите пожалуйста, в чём может быть проблема?

Viton-Zizu
13-02-2012, 08:30
с проблемой запуска разобрался, надо было кавычек больше)
теперь подскажите пожалуйста, как сделать чтобы она висела в процессах?
и ещё бы было здорово чтобы в реестр ветку добавляла!))

ferget
13-02-2012, 09:12
как сделать чтобы она висела в процессах »

http://forum.oszone.net/thread-222275.html

DmitriiV
13-02-2012, 09:20
... как сделать чтобы она висела в процессах?.. »Если речь о бесконечном цикле, то так:

Do
WScript.Sleep 10000 'кол-во миллисекунд
'прочий код
Loop

... чтобы в реестр ветку добавляла »Пример:

WshShell.RegWrite "HKEY_CURRENT_USER\NewKey\", vbNullString


P.S.
Выбранный Вами подход к решению данной задачи не рационален. Смотрите в сторону создания подписок на системные события с помощью WMI (в теме по ссылке, приведённой ferget,- это пример от Iska).

Viton-Zizu
13-02-2012, 10:08
Спасибо большое за ответы!!! сейчас гляну ссылки, попробую чего нить сделать)

Viton-Zizu
15-02-2012, 04:47
Обалденный пример от ISKA!
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

Единственно нужно его ещё поставить в автозагрузку, добавлением записи в реестр я решу эту проблему?

Viton-Zizu
15-02-2012, 05:34
Dim WshShell
WshShell.RegWrite "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run", "C:\Program Files\скрипт\мой_скрипт.vbs"
подскажите синтаксис пожалуйста?)

Разобрался!) ещё по тестю немного и тему поставлю решённой)

Viton-Zizu
15-02-2012, 06:57
единственно нашёл один минус, у той программы которая должна запускаться должен быть отключен "старт вместе с виндовс" иначе дико тупить при старте начинает что невозможно окно свернуть) подскажите с чем это может быть связано? конешно не критично, просто интересно)

Iska
15-02-2012, 13:57
О какой конкретно программе речь?

DmitriiV
15-02-2012, 14:48
... с чем это может быть связано? »Вероятнее всего, с тем, что в сценарии используется бесконечный цикл.
Не надо пытаться запускать подобные сценарии непосредственно при старте системы или регистрации сеанса пользователя. Ставьте их запуск в планировщик или запускайте с удалённого компьютера.

Viton-Zizu
16-02-2012, 03:27
О какой конкретно программе речь? »
Network Assistant) я вот думаю, может при старте скрипта поставить таймер небольшой, секунд на 10, чтобы всё уже запустилось и без запинок работало?

Не надо пытаться запускать подобные сценарии непосредственно при старте системы или регистрации сеанса пользователя. Ставьте их запуск в планировщик или запускайте с удалённого компьютера. »
Хотелось бы непосредственно при старте системы, попробую таймер поставить.

DmitriiV
16-02-2012, 07:35
Хотелось бы непосредственно при старте системы »Тогда попробуйте двухэтапный запуск: в составе политики компьютера (локальной или групповой - по вашим условиям) запускайте сценарий, единственная цель которого - запуск основного сценария (с бесконечным циклом).
Когда-то пробовал сам такой метод, вроде, работало.




© OSzone.net 2001-2012