Задача:
Необходимо запустить заданную версию 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. Как запустить скрипт от имени администратора.