UncleFather » 26 янв 2016 14:02, Вт
Задача:
Необходимо запустить заданную версию TeamViewer, вместо той, которая уже запущена в системе. При попытке запуска видим сообщение:
Уже работает другой экземпляр TeamViewer. Закройте его перед запуском TeamViewer.
Решение:
Решение задачи заключается в том, чтобы выгрузить из памяти (завершить работу) всех запущенных экземпляров TeamViewer.
Для этого нужно создать и запустить от имени Администратора командный (bat) файл следующего содержания:
Код: Выделить всё
TaskKill /F /T /IM "TeamViewer*"
TaskKill /F /T /IM "tv_w*"
Net Stop TeamViewer7
Net Stop TeamViewer8
Net Stop TeamViewer9
Net Stop TeamViewer10
Net Stop TeamViewer11
TaskKill /F /T /IM "TeamViewer*"
TaskKill /F /T /IM "tv_w*"
PING -n 1 -w 10000 192.168.253.253 > nul
TeamViewerQS.exe
В этом сценарии мы сначала завершаем все процессы, начинающиеся с «TeamViewer» и с «tv_w» - процессы с такими именами обычно запускает TeamViewer.
Далее - останавливаем службу TeamViewer. Здесь мы по очереди останавливаем службы всех известных данный момент версий TeamViewer. Естественно, в системе будет только одна из служб, она и будет остановлена, а остальные команды «Net Stop ...» не произведут никаких действий - они нужны лишь для того, чтоб сделать скрипт универсальным.
После этого, на всякий случай, еще раз завершаем все процессы, начинающиеся с «TeamViewer» и с «tv_w» и ждем 10 секунд, чтобы служба TeamViewer уже точно остановилась.
Ну и в конце концов, запускаем ту версию TeamViewer, которая нам нужна (она должна находиться в той же папке, что и командный файл). В данном случае запускаем «TeamViewerQS.exe»
То же самое для Visual Basic Script:
Код: Выделить всё
On Error Resume Next
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run "TaskKill /F /T /IM ""TeamViewer*""",0,False
WshShell.Run "TaskKill /F /T /IM ""tv_w*""",0,True
WshShell.Run "Net Stop TeamViewer7",0,True
WshShell.Run "Net Stop TeamViewer8",0,True
WshShell.Run "Net Stop TeamViewer9",0,True
WshShell.Run "Net Stop TeamViewer10",0,True
WshShell.Run "Net Stop TeamViewer11",0,True
WshShell.Run "TaskKill /F /T /IM ""TeamViewer*""",0,False
WshShell.Run "TaskKill /F /T /IM ""tv_w*""",0,True
WScript.Sleep 1000*10
WshShell.Run "C:\полный путь к желаемой версии\TeamViewerQS.exe",1,False
О том, как запустить VBS скрипт от имени Администратора, читаем статью VBS. Как запустить скрипт от имени администратора.
[size=150][b]Задача:[/b][/size]
Необходимо запустить заданную версию TeamViewer, вместо той, которая уже запущена в системе. При попытке запуска видим сообщение: [quote]Уже работает другой экземпляр TeamViewer. Закройте его перед запуском TeamViewer.[/quote]
[attachment=0]01.jpg[/attachment]
[hr][/hr]
[size=150][b]Решение:[/b][/size]
Решение задачи заключается в том, чтобы выгрузить из памяти (завершить работу) всех запущенных экземпляров TeamViewer.
Для этого нужно создать и запустить от имени Администратора командный (bat) файл следующего содержания:
[code]TaskKill /F /T /IM "TeamViewer*"
TaskKill /F /T /IM "tv_w*"
Net Stop TeamViewer7
Net Stop TeamViewer8
Net Stop TeamViewer9
Net Stop TeamViewer10
Net Stop TeamViewer11
TaskKill /F /T /IM "TeamViewer*"
TaskKill /F /T /IM "tv_w*"
PING -n 1 -w 10000 192.168.253.253 > nul
TeamViewerQS.exe[/code]
В этом сценарии мы сначала завершаем все процессы, начинающиеся с «[b][i]TeamViewer[/i][/b]» и с «[b][i]tv_w[/i][/b]» - процессы с такими именами обычно запускает TeamViewer.
Далее - останавливаем службу TeamViewer. Здесь мы по очереди останавливаем службы всех известных данный момент версий TeamViewer. Естественно, в системе будет только одна из служб, она и будет остановлена, а остальные команды «[b][i]Net Stop ...[/i][/b]» не произведут никаких действий - они нужны лишь для того, чтоб сделать скрипт универсальным.
После этого, на всякий случай, еще раз завершаем все процессы, начинающиеся с «[b][i]TeamViewer[/i][/b]» и с «[b][i]tv_w[/i][/b]» и ждем 10 секунд, чтобы служба TeamViewer уже точно остановилась.
Ну и в конце концов, запускаем ту версию TeamViewer, которая нам нужна (она должна находиться в той же папке, что и командный файл). В данном случае запускаем «[b][i]TeamViewerQS.exe[/i][/b]»
То же самое для Visual Basic Script:
[code]
On Error Resume Next
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run "TaskKill /F /T /IM ""TeamViewer*""",0,False
WshShell.Run "TaskKill /F /T /IM ""tv_w*""",0,True
WshShell.Run "Net Stop TeamViewer7",0,True
WshShell.Run "Net Stop TeamViewer8",0,True
WshShell.Run "Net Stop TeamViewer9",0,True
WshShell.Run "Net Stop TeamViewer10",0,True
WshShell.Run "Net Stop TeamViewer11",0,True
WshShell.Run "TaskKill /F /T /IM ""TeamViewer*""",0,False
WshShell.Run "TaskKill /F /T /IM ""tv_w*""",0,True
WScript.Sleep 1000*10
WshShell.Run "C:\полный путь к желаемой версии\TeamViewerQS.exe",1,False[/code]
О том, как запустить VBS скрипт от имени Администратора, читаем статью [url=http://manaeff.ru/forum/viewtopic.php?p=1669#p1669]VBS. Как запустить скрипт от имени администратора.[/url]