понедельник, 30 июня 2008 г.

Запускаем VPN подключение как службу

Возможность пользовать приложение как службу дает ахрененно нужную нам весЧь - постоянное подключение VPN к серверу, несмотря на ребуты компа Для этого:
1. Создаем VPN подключение и настраиваем его как надо, то есть включаем максимально количество реконнектов на случай разрыва (я б писал с синтервалом в 5 минут, что зазря машину мучать) и называем его VPNCONNECT.
2. Создаем батник autovpn.bat (название отражает смысл- автоматический пуск сокдинения vpn). В теле батника пишем строку "@cmd /k start rasdial NAME LOGIN PASS", где NAME - название подключения (в нашем случае VPNCONNECT); LOGIN и PASS собсно логин и пасс Их к сожалению придется указывать в явнм виде, поэтому батник лучше куда-нить запихнуть поглубже... Но мы же для примера
3. положим его в "C:\windows\vpn"
4. Далее регистрируем его в качестве службы. Для этого пользуемся инструкцией с сайта мелкософта или смотрим мной кешированную копию или краткая выжимка:
Цель: заставить Windows установть службу "autovpnconnect", которая будет запускать "autovpn.bat" в качестве службы. Для этого
4.а понадобится (качаем) например набор Windows 2003 Resource Kit в состав которого входят нужные нам программы. Программа Instrsrv.exe отвечает за установку и удаление системных служб
из операционной системы Windows, а программа Srvany.exe позволяет
выполнять в качестве службы любое приложение Windows.
4.б Берем оттуда соответственно только Instrsrv.exe и Srvany.exe и кладем в определенную нами выше для этой задачи диреторию "C:\windows\vpn"
4.в В командной строке MS-DOS (выполняется CMD.EXE) введите следующую команду:
"C:\windows\vpn\INSTSRV.EXE autovpnconnect C:\windows\vpn\SRVANY.EXE"
ПРИМЕЧАНИЕ. Для проверки правильности создания службы убедитесь, что параметр в разделе HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\autovpnconnect указывает на SRVANY.EXE. Если этот параметр установлен неправильно, служба прекращает работу вскоре после запуска и возвращает код события 7000 — «Не удается запустить имя_службы

4.г Запустите редактор реестра (Regedt32.exe) и найдите следующий подраздел:
"HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\autovpnconnect"
4.д В меню «Правка» выберите «Добавить раздел». Введите следующие данные и нажмите кнопку «ОК»:
Название раздела: Параметры
Класс: <пустая строка (пусто)>
4.е Выберите раздел «Parameters» (Параметры).
4.ж В меню «Правка» выберите «Добавить параметр». Введите следующие данные и нажмите кнопку «ОК»:
Имя параметра: Application
Тип данных: REG_SZ
Строка: "C:\windows\vpn\autovpn.bat"
4.з Закройте редактор реестра.
Примечание. По умолчанию вновь созданная служба настроена на автоматический запуск
при перезагрузке системы. Для изменения этого режима на «Вручную»
запустите приложение «Службы» из панели управления и измените значение
параметра на «Вручную».


Огромное спасибо Diews и отдельное ishua.

9 комментариев:

Unknown комментирует...

гыг, эт где ты записал?:)

Анонимный комментирует...

Система ругается, что служба не ответила во время.
Но все запускается и работает.
Возможно для нормального запуска нужно еще гдето прописать, чтобы она отвечала об успеше запуска.

Анонимный комментирует...

Спасибо, действительно все работает!

Анонимный комментирует...

ОГРОМНОЕ СПАСИБО ТЕБЕ ДРУГ!

Анонимный комментирует...

СПАСИБО! Очень нужная вещь, давно искал! подключаться к домену ещё не пробывал, но видимо пойдет., Успешно работает и с cmd файлом - без указания логина и пароля ( rasphone -d myvpn )

Анонимный комментирует...

да.. небольшая замента - В свойствах vpn подключения - убрать галку - запрос имени пользователя..! иначе окно подключения тихо зависает на этом. ( все делал по W7 Enterprise )

Анонимный комментирует...

По поводу расширенных настроек - уверен что и VBS скрипт пойдет, а там уже пишите что хотите, можно контролировать службу как угодно.

Есть такая проблема - если VPN был не доступен, и все авто-попытки кончились - то зависает окно ( в службе его даже видно не будет ) о неудачном подключении.

но при перезагрузке все восстановиться.

Анонимный комментирует...

вс работает.. способ классный.. но бывает одно но... при включении службы в процессах начинает появляться процесс rasphone.exe // пока не забьет всю память и весь процессор (((

botva комментирует...

а батник зачем? почему бы сразу не создать службу с использованием rasphone или rasdial с параметрами.