![]() |
Проблемы с автоматизацией запуска VPN
Здравствуйте, уважаемые участники форума OSzone.net!
Передо мной встала такая задача: создать способ автоматического запуска VPN-соединения для подключения к интернету после включения ПК, который бы удовлетворял следующим критериям: 1) был бы универсален для WinXP x86 и Win7 x64; 2) срабатывал бы сразу при запуске ОС, еще до входа в систему, стабильно и гарантированно в 100% случаев; 3) не выводил бы никаких окон, не вылазил бы в трее и вообще никак бы себя не проявлял; 4) был бы максимально изящным решением и настраивался после установки ОС буквально в несколько кликов. Изучив много источников в интернете по этому вопросу, я конечно же отмел примитивное помещение ярлыков в автозагрузку, не удовлетворяющее критерию №2, работу с планировщиком задач, не подходящую по критерию №4, вызов rasdial при помощи bat-файлов, не устраивающий по критерию №3 и остановился на решении данного вопроса при помощи создания твика реестра. Для того, чтобы обеспечить критерий №3, я худо-бедно ознакомился с VBS-скриптами, и создал скрипт обращения к rasdial, наиболее простой по виду, даже не знаю, можно ли еще что-то упростить. Содержание скрипта PROVIDER.vbs следующее (предполагая подключение PROVIDER по логину login и паролю pass): Код:
CreateObject("WScript.Shell").Run "rasdial PROVIDER login pass", 0, false разместил PROVIDER.vbs в папке system32, а затем создал твик реестра PROVIDER.reg такого содержания: Код:
Windows Registry Editor Version 5.00 Я пробовал обращаться к VBS-скрипту по разному, напрямую и через wscript, такими способами: Код:
"PROVIDER"="PROVIDER.vbs" соединение устанавливалось почти сразу, а другая половина запусков ОС была безуспешна. Интуиция подсказывает, что решение срабатывает тогда, когда уже успела проинициализироваться локальная сеть, и надо как-то связать этот процесс с запуском скрипта. Тогда я решил попробовать пойти путем создания системной службы, написав такой файл PROVIDER.bat: Код:
sc create PROVIDER start= auto binPath= "rasdial PROVIDER login pass" DisplayName= "PROVIDER" depend= lanmanworkstation obj= "NT AUTHORITY\LocalService" но в отличие от 50%-ной работы ссылки в реестре не работает вообще. Журнал событий Windows выдает последовательно следующую пару ошибок: №1: Превышение времени ожидания (30000 мс) при ожидании подключения службы "PROVIDER". №2: Сбой при запуске службы "PROVIDER" из-за ошибки Служба не ответила на запрос своевременно. Дальнейшие поиски по данному вопросу ни к чему не привели. Предлагался только кривой вариант в виде создания задержки bat-файлом, минуту пингуя несуществующий локальный IP-адрес, но это же полная чушь... Обращаюсь к вам, уважаемые форумчане. Какова ошибка в моих действиях? Правильно ли предположение о том, что скрипт не работает из-за отсутствия корреляции с lanmanworkstation? Что же мне предпринять, как создать рабочую службу или хотя бы правильный твик реестра? Заранее спасибо за внимание. С уважением, Александр. P.S. В данный момент тестирую на Win7 Ultimate SP1 x64. UPD Я продолжаю экспериментировать, но безуспешно. По совету товарища попробовал переписать PROVIDER.reg с HKLM на HKCU, вроде бы ветка считывается попозже. Но так же, как и в случае с HKLM, запускается все равно через раз. Затем я попробовал создать службу с указанием не rasdial, a скрипта: Код:
binPath= "wscript PROVIDER.vbs" Я теряюсь в догадках, что еще можно сделать в этом положении... |
Проблему удалось решить неожиданно простым способом.
Создал службу, как и раньше, но прописал обращение не к rasdial, а к имеющемуся скрипту. Ну и для автоматизации прописал копирование скрипта в System32. Получился такой bat-файл: Код:
copy PROVIDER.vbs %windir%\System32\PROVIDER.vbs Достоинство - это гарантированно работает, соблюдая все мои критерии и устанавливается в один двойной клик. Проблему можно считать решенной, а тему - закрыть. Жаль, правда, что никто так и не высказался по этой проблеме. С уважением, Александр. |
AlSar163, к сожалению ваш способ у меня не сработал. Появляется всё та же пара ошибок:
«Превышение времени ожидания (30000 мс) при ожидании подключения службы «vpn».» «Сбой при запуске службы «vpn» из-за ошибки Служба не ответила на запрос своевременно.» |
Lyrot, у меня тоже сохраняется эта пара ошибок. Но почему-то подключение срабатывает.
У вас сам скрипт при запуске вручную работает? |
Цитата:
|
Долго искал решение задачи подключения VPN из командной строки в cmd/bat скрипте.
Одно из условий: не оперировать в скрипте логином и паролем т.к. это очень ненадежно, к тому же они могут изменяться. В итоге сделал просто: Создал ярлык для VPN подключения, обозвал его MaglanInternet.lnk, положил в один каталог с батником и при необходимости подключить vpn из батника делаю это командой: Код:
start MaglanInternet.lnk Код:
rasdial "MaglanInternet" /DISCONNECT Что касательно задачи автора поста, то можно было создать ярлык vpn подключения и скопировать его в аутозагрузку. А чтобы не выводилось никаких окон и сообщения достаточно в свойствах этого подключения снять соответствующие галочки. Примечательно что командами Код:
netsh interface set interface "ИМЯПОДКЛЧЮЕНИЯ" disabled |
zhuk09, а разве зависимость от lanmanworkstation - это не то же самое?
И да, исходная задача состояла в том, чтобы автоматизация настраивалась в пару кликов после установки. А не путем лазанья в политиках, планировщиках и т.п. God_Zilla, ну в моем случае логин\пароль неизменны уже более 5 лет, если уж изменятся, можно и отредактировать скрипт. А насчет надежности... Ну у меня ничего не расшарено, Wi-Fi не раздаю, просто одно подключение для одного ПК, тут не вижу какой-то особой проблемы. Цитата:
|
Время: 18:39. |
Время: 18:39.
© OSzone.net 2001-