Программное создание VPN подключения

Мотивация

Когда-то, работая сотрудником технической поддержки интернет-провайдера, я столкнулся с необходимостью постоянно выполнять одну и ту же работу - объяснять пользователям как создавать, настраивать и запускать VPN соединение в Windows. Это достаточно быстро утомляет и надоедает, потому я занялся поиском выхода из подобной кризисной для себя ситуации. Поискав информацию на эту тему в инете - ничего толкового не нашёл и решил задачу самостоятельно.
В итоге родилась программа VPN control которая не только создаёт VPN соединение, но и управляет им, а так же контролирует правильность ввода логина/пароля и защищает настройки соединения от всевозможных вредоносных программ типа "звонилка", пытающихся перенастроить VPN соединение для дозвона на дорогой международный номер (см. об этом информацию в инете).
Решив это однажды, и выложив решение на сайте технической поддержки, я столкнулся с тем, что ко мне стали постоянно сыпаться вопросы "как сделать так же?". Ответ на этот вопрос вы можете найти ниже.

Программное решение

Как обычно и бывает - у каждой проблемы есть несколько решений. В данном случае так же имеется как минимум два варианта решения. О втором варианте будет рассказано несколько позже. Пока же рассмотрим основной (для меня) вариант решения - программный ( открыть в отдельном окне):

Надеюсь, что комментарии в коде достаточны для понимания механизма создания VPN соединения.
В программе используются следующие функции и структуры:

Использование Connection Manager Administrator Kit (CMAK)

Корпорация Microsoft конечно же не могла не предвидеть возникновения проблем при настройке VPN у рядовых пользователей. Поэтому в комплектацию серверных ОС входит "Connection Manager Administrator Kit". Он позволяет создавать исполняемые файлы производящие автоматическую настройку VPN соединений с заданными параметрами. Пример использования CMAK показан здесь.
Конечно же стоит обратить внимание на то, что при использовании CMAK вы лишаетесь возможности встроить функционал создания VPN соединений в свою программу (если не прибегать к особо неправильным решениям).

Все возникшие пожелания и предложения можно (или даже нужно) сообщить в гостевую или на и статья будет скорректированна, если это будет уместно.

PS Вполне вероятно что после создания VPN соединения у вас появится желание разместить ярлык для него на рабочем столе. Как выяснилось - сделать это гораздо сложнее, чем создать само VPN соединение. Подробно процесс создания ярлыка для VPN соединения рассмотрен здесь.


Вернуться в раздел "Windows"