Имя пользователя:
Пароль:
 | Правила  

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

Ответить
Настройки темы
VBS/WSH/JS - Скрипт, проверяющий программу и предлагающий ее запустить если она вырубилась

Старожил


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

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


Изменения
Автор: koresaram
Дата: 28-08-2018
Всем привет

исходные данные:
на компе должна работать программа c:programm files/proga.exe
периодически она вылетает и ее приходится запускать руками
пояснение - прога на удаленном компе и там нет мышки клавиатуры (там тач пад можно пальцем в экран ткнуть), чтобы пользователь смог зам ее запустить (мышкой и клавиатурой прогу запустить можно только из диспетчера задач). Приходится подключаться по тимке и включать им ее.

надо:
скрипт, который будет, к примеру, каждые 10 минут проверять наличие процесса proga.exe и если такой процесс не обнаружен, выводить окно на экран с предложением запустить программу Да/Нет
соответственно при нажатии на Да - запускается proga.exe а при нажатии на Нет скрипт уходит в свой обычный режим и через 10 минут снова предложит запустить прогу. И еще этот скрипт должен выключать процесс експлорера (при вылете программы этой остается окно "Мой компьютер"

Код: Выделить весь код
Option Explicit
Dim objWMIService, objProcess, colProcess
Dim strComputer, strProcessKill 
Dim WshShell
strComputer = "."
strProcessKill = "'explorer.exe'" 

Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" _ 
& strComputer & "\root\cimv2") 

Set colProcess = objWMIService.ExecQuery _
("Select * from Win32_Process Where Name = " & strProcessKill )
For Each objProcess in colProcess
objProcess.Terminate()
Next

Set WshShell = CreateObject("WScript.Shell")
WshShell.Run chr(34) & "c:\Program Files\PROGA.exe" & Chr(34), 0
Set WshShell = Nothing

WScript.Quit
есть вот такая штука (файл сценария VBScript). Если в нее ткнуть, то прога запускается и експлорер убирается. Вот если к ней еще интерактив прикрутить будет хорошо/

-------
настоящему корейцу завсегда везде ништяк!


Отправлено: 08:28, 28-08-2018

 

Ветеран


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

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


koresaram, мне не нравится Ваш подход в принципе. Предлагаю свой:
Скрытый текст
Код: Выделить весь код
Option Explicit

Const strPath2Programm = "C:\Program Files\VideoLAN\VLC\vlc.exe"


Dim objFSO
Dim objWshShell

Dim lngProcessID
Dim intRetValue


Set objFSO      = WScript.CreateObject("Scripting.FileSystemObject")
Set objWshShell = WScript.CreateObject("WScript.Shell")

With WScript.CreateObject("WbemScripting.SWbemLocator").ConnectServer(".", "root\cimv2")
	If objFSO.FileExists(strPath2Programm) Then
		Do
			If .Get("Win32_Process").Create(strPath2Programm, objFSO.GetParentFolderName(strPath2Programm), Nothing, lngProcessID) = 0 Then
				WScript.Sleep 1000
				objWshShell.AppActivate lngProcessID
				
				.ExecNotificationQuery( _
					"SELECT * FROM __InstanceDeletionEvent WITHIN 1 WHERE " & _
					"TargetInstance ISA 'Win32_Process' AND " & _
					"TargetInstance.ProcessID = '" & CStr(lngProcessID) & "'").NextEvent
				
				intRetValue = objWshShell.Popup("Процесс [" & strPath2Programm & "] был завершён." & vbLf & vbLf & "Запустить процесс снова?", 10, "Повторный запуск процесса", vbYesNo + vbQuestion)
				
				Select Case intRetValue
					Case -1, 6 ' Ничего не было нажато, Нажата кнопка «Да»
						' Nothing to do
					Case Else
						Exit Do
				End Select
			Else
				WScript.Echo "Не удалось запустить процесс [" & strPath2Programm & "]."
				WScript.Quit 2
			End If
		Loop
	Else
		WScript.Echo "Не удалось найти файл [" & strPath2Programm & "]."
		WScript.Quit 1
	End If
End With

Set objWshShell = Nothing
Set objFSO      = Nothing

WScript.Quit 0

Будут вопросы по коду — задавайте.
Это сообщение посчитали полезным следующие участники:

Отправлено: 15:13, 28-08-2018 | #11



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

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


Аватара для YuS_2

Crazy


Contributor


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

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


Цитата Busla:
легко может быть »
о чем и речь, собственно:
Цитата:
Продукты WinRM 2.0 и PowerShell 2.0 можно установить на компьютерах со следующими операционными системами:
Windows Server 2008 с пакетом обновления 1 (SP1);
Windows Server 2008 с пакетом обновления 2 (SP2);
Windows Server 2003 с пакетом обновления 2 (SP2);
Windows Vista с пакетом обновления 2 (SP2);
Windows Vista с пакетом обновления 1 (SP1);
Windows XP с пакетом обновления 3 (SP3);
Windows PowerShell 2.0 можно установить в следующих поддерживаемых операционных системах:
Windows Embedded Standard 2009
Windows PowerShell 2.0 для Windows Embedded Standard 2009 можно загрузить с MyOEM. Макрокомпонент также доступен с MyOEM.
Windows Embedded POSReady 2009;
Windows PowerShell 2.0 для Windows Embedded POSReady 2009 можно загрузить с MyOEM.

Для работы Windows PowerShell 2.0 требуется среда CLR версии 2.0. Командлеты, разработанные для Windows PowerShell 2.0, должны быть скомпилированы для среды CLR версии 2.0. Среда CLR 2.0 включена в версии Microsoft .NET 2.0, 3.0 или 3.5 с пакетом обновления 1.

-------
scio me nihil scire. Ѫ


Отправлено: 15:15, 28-08-2018 | #12


Старожил


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

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


Цитата Busla:
кассы в магазинах - это легко может быть какой-нибудь Embedded XP »
Цитата YuS_2:
Дык, написать можно на том языке, который в наличии на целевом компьютере, если нет желания позаниматься установкой среды в которой будет выполняться написанное. Есть там powershell? Вот от этой печки и надо плясать... »
там разные. есть винХП есть вин8 есть вин10
но указанный в теме код (вбскрипт) работает на всех. что такое пауершелл я хз )

-------
настоящему корейцу завсегда везде ништяк!


Отправлено: 16:38, 28-08-2018 | #13


Старожил


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

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


Что-то идет не так )

https://clip2net.com/s/3WklZYF картинка ссылка на климптунет

я скопировал код, сохранил его как frontolstart.vbs закачал на кассу и вырубил фронтол. exe (пусть к программе в скрипте поменял с vlc на frontol). Прошло 15 минут - ничего не происходит. Как узнать "подходит ли скрипт под ту среду, которая стоит на кассе"? я не программист, поэтому, надеюсь, понятно, что я хотел сказать )

-------
настоящему корейцу завсегда везде ништяк!


Отправлено: 17:16, 28-08-2018 | #14


Ветеран


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

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


Цитата koresaram:
что такое пауершелл я хз »
PowerShell — cкриптовый язык, работающий в консоли (собственной), базирующийся на платформе Microsoft .Net, пришёл на замену пакетным файлам и WSH, поддерживает Automation (где-то лучше, где хуже, нежели WSH) и даёт, естественно, доступ ко всем классам .Net, при желании можно пользовать низкоуровневые (ну, относительно низкоуровневые ) вставки на C#.

PowerShell — Википедия.


Цитата koresaram:
я скопировал код, сохранил его как frontolstart.vbs закачал на кассу и вырубил фронтол. exe (пусть к программе в скрипте поменял с vlc на frontol). Прошло 15 минут - ничего не происходит. »
Для начала стоит запустить frontolstart.vbs, а затем поменять запуск frontol.exe (или что там у Вас) на запуск frontolstart.vbs.

Отправлено: 17:23, 28-08-2018 | #15


Старожил


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

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


Цитата Iska:
Для начала стоит запустить frontolstart.vbs, а затем поменять запуск frontol.exe (или что там у Вас) на запуск frontolstart.vbs. »
то есть я правильно понимаю, что в нашем случае наша вбс будет типа оболочкой вместо винды?

сейчас в настройках самой программы фронтол (это и есть кассовая программа) есть 2 варианта - ос (винда) и фронтол (вместо ос). Туда впихнуть наш вбс не получится я так понимаю. Собственно поэтому я излагал свой вариант - скрипт, чекающий наличие фронтол.екзе и, при его остуствии (вылетел фронтол), предлагающий его запустить .

-------
настоящему корейцу завсегда везде ништяк!


Отправлено: 17:34, 28-08-2018 | #16


Ветеран


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

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


Цитата koresaram:
то есть я правильно понимаю, что в нашем случае наша вбс будет типа оболочкой вместо винды? »
Неа. Всё, что скрипт делает — сам запускает искомый исполняемый файл. А уж будет или нет оболочкой — это настраивается вовне его.

Цитата koresaram:
сейчас в настройках самой программы фронтол (это и есть кассовая программа) есть 2 варианта - ос (винда) и фронтол (вместо ос). »
Смотрели — как именно реализовано «фронтол (вместо ос)»? Подменой стандартного shell'а (Проводника) в реестре? Или каким-то иным особо извращённым хитрым способом?

Цитата koresaram:
Туда впихнуть наш вбс не получится я так понимаю. »
Туда — куда?

«ос (винда)» — просто подменяете ярлык на запуск фронтол ярлыком на запуск скрипта. Если ярлык в Автозагрузке — подменяете там. Если путь в автозапуске реестра — подменяете в реестре.

«фронтол (вместо ос)» — открываем оснастку групповой политики, задаём в качестве оболочки пользовательского интерфейса (Custom user interface) наш скрипт в виде:
Код: Выделить весь код
"c:\Windows\System32\wscript.exe" "C:\Мои проекты\0190\0001.vbs"
Скрытый текст



и пользуемся. Естественно, желательно будет добавить код для выхода из системы (или завершения работы системы) при завершении работы скрипта, дабы люди не терялись при пустом экране. Есть домен — ещё проще, всё делаем в одном месте, есть разделение по OU, фильтрация, предпочтения групповой политики и т.п., назначаем только тем, кому надо. Если домена нет, но ОС от Vista и выше — используем множественную групповую политику (Использование множественной локальной групповой политики), не гребя под одну планку пользователей и администраторов машины. В крайнем случае тупо подгружаем куст реестра потребного пользователя, импортируем туда файл реестра с данной политикой, выгружаем куст реестра.

Отправлено: 18:18, 28-08-2018 | #17


Старожил


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

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


Iska,
тут блин фиг знает как реализовано (
в настройках этого фронтола есть галочка )) "Запускать фронтол вместо ОС" - и все. То есть по идее смотреть реестр на автозагрузку надо.

Но. Фишка в чем. Наши "сисадмины" говорят, что подумают как это реализовать ). Думают они уже месяц ) Вот тот код, который я в теме приводил, (мне его подруга написала минут за 5) - если на него сделать ярлык и запихать в "С-Пользователи-Ссылки" - то появляется ярлык вместо избранных ссылок в "Мой компьютер". На него можно нажать и все срабатывает. При этом этот скрипт (приведенный в теме) сисадмины раскидать смогли на все машины, а вот ярлык на этот вбс раскидать на все компы в "С-Пользователи-Ссылки" почему-то нет. Хотя по идее это такой же файл.

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

-------
настоящему корейцу завсегда везде ништяк!


Отправлено: 19:18, 28-08-2018 | #18


Ветеран


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

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


Цитата koresaram:
в настройках этого фронтола есть галочка )) "Запускать фронтол вместо ОС" - и все. То есть по идее смотреть реестр на автозагрузку надо. »
Или использовать Process Monitor. Я, вот, лично не сильно удивлюсь, если там будет тупо подменяться HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Shell .

Цитата koresaram:
а вот ярлык на этот вбс раскидать на все компы в "С-Пользователи-Ссылки" почему-то нет. Хотя по идее это такой же файл. »
Файл-то ярлыка такой же, но кроме ярлыка нужно «раскидать» ещё и сам скрипт, чую — в этом дело .

Домен у Вас есть?

Отправлено: 19:25, 28-08-2018 | #19


Старожил


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

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


домена наверное нет (это большая локалка. То есть есть айпишники каждой кассы (где-то)
сам скрипт раскидан. на всех кассах он есть.
но конкретно ярлык на каждую кассу почему-то не получилось у них ( хотя никаких прав доступа и прочих заморочек там нет (руками я могу зайти в любую кассу - сделать ярлык на этот скрипт и копирнуть его в С/Пользователи/Ссылки и пользователь его начинает видеть и может нажимать.
P>S> если я делаю ярлык на скрипт и копирую его (к примеру) себе на свой комп, то путь к ярлыку меняется на тот,где я положил у себя на компе файл. Может так проще будет - как в ярлыке задать абсолютный путь чтобы ярлык всегда ссылался на D://files/frontol.vbs ? Вне зависимости от того, где лежит сам файл frontol.vbs

-------
настоящему корейцу завсегда везде ништяк!


Отправлено: 19:31, 28-08-2018 | #20



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - проверять запущена программа, а если она запущена то закрывать ее DetFedot Скриптовые языки администрирования Windows 4 26-02-2018 15:32
CMD/BAT - [решено] Проверка запущена ли программа, если нет то запустить ее... Svnkill Скриптовые языки администрирования Windows 2 12-02-2018 13:18
CMD/BAT - [решено] Как запустить программу и тут же ее убить? Pozia Скриптовые языки администрирования Windows 1 20-08-2015 12:47
Кто знает такой сканер, программу Hitman Pro ? Она надежная не вирус ли она сама? micro8 Лечение систем от вредоносных программ 0 22-09-2010 13:08
Как запустить программу, чтобы пользователь ее невидел? Kvasia Microsoft Windows 2000/XP 11 06-05-2006 02:24




 
Переход