Автозапуск подключения PPPoE без входа в учётную запись
Я хотел бы поведать об одном трюке, который можно провернуть при помощи планировщика заданий в Windows. У меня установлена Windows 7, а также есть PPPoE-подключение от нашего городского кабельного провайдера. Задача состоит в том, чтобы включать это подключение сразу же после того, как в винде поднимается подключение к локальной сети, и пользователь может быть ещё даже не вошёл в свою учётную запись. В большинстве своём инструкции, которые можно найти в рунете, сводятся к вынесению ярлыка подключения в автозапуск. Здесь же иной случай. Необходимо, чтобы подключение производилось ещё до входа в учётную запись пользователя. Забегая вперёд, скажу, что таким же образом можно сделать выполнение любой другой команды, причём не только при подключении к какой-либо проводной сети, но и к Wi-Fi. Я привожу полное описание, с кучей скриншотов, как для новичков. Итак, что у нас есть: • Windows, в которой есть несколько учётных записей (я создал ещё одну учётку, для наглядности), и Вы не хотите делать автовход в какую-либо из них.
• Подключение с использованием PPPoE, которое необходимо включать сразу после инициализации нужной сети. • Отсутствует роутер, который на корню решил бы эту проблему, самостоятельно подключаясь и раздавая интернет компам в локальной сети. Ну или роутер не нужен в принципе.
Выясняем уникальный идентификатор подключения (GUID)Идём в «Пуск» – «Панель управления» – «Система и безопасность» – внизу под «Администрированием» выбираем «Просмотр журналов событий».
В открывшемся окне слева идём по такому пути: «Журналы приложений и служб»/«Microsoft»/«Windows»/«Network Profile»/«Выполняется», находим там строчки с кодом события «10000».
Cреди них находим ту, что относится к нужной сети, у меня это «Сеть 2». Переключаемся на вкладку «Подробности», и вот он, нужный нам GUID.
Сразу можно включить «Режим XML», и просмотреть кусок XML-представления « . ».
В качестве ещё одного варианта, Вы можете найти нужный GUID в реестре по следующему пути: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\Profiles
Нужный мне GUID – «». Пример XML-представления события:
Здесь я вижу, что был подключен сетевой профиль «Сеть 2», и вижу его GUID в строке « ».
Создаём .bat-файлВам следует убедиться, что PPPoE-соединение у вас настроено так, что его могут использовать все пользователи, если Вы хотите, чтобы подключение производилось от пользователя «Система» или от другой учётной записи. Это необходимо для случая, когда у учётной записи, которую Вы обычно используете, отсутствует пароль на вход. Позже я об этом напомню ещё раз. Я предполагаю, что соединение у Вас уже настроено, единственное, что необходимо сделать – это создать .bat-файл, в котором нужно будет написать rasdial MyDearProvider login password где rasdial – консольное приложение, при помощи которого можно установить соединение, «MyDearProvider» — имя PPPoE подключения, которое необходимо подключить, а «login» и «password», соответственно, логин и пароль к подключению. Сразу в консоли можете проверить, выполняется ли подключение к интернету, запустив этот файл, или можно обойтись без консоли, в целях отладки поставив в следующей строке команду «pause» и запуская файл, но не забудьте убрать потом команду pause, когда добьётесь того, что запуск .bat-файла на выполнение приведёт к подключению к интернету.
Создаём задание в планировщикеИдём в «Пуск» – «Панель управления» – «Система и безопасность» – внизу под «Администрированием» выбираем «Расписание выполнения задач».
Запустится планировщик задач, где слева нужно выбрать «Библиотека планировщика задач», и в правой части окна нажать «Создать задачу…».
В открывшемся окне на вкладке «Общие» заполняем «Имя», например, «Autoconnect_MyDearProvider», ниже в «Параметрах безопасности» выбираем нужного пользователя, от кого будет выполняться подключение, затем «Выполнять вне зависимости от регистрации пользователя», однако, если у выбранного пользователя отсутствует пароль на вход в учётную запись, то подключение не будет производиться, если пользователь не вошёл в систему. В случае, если у вас отсутствует пароль для учётной записи, выберите в качестве пользователя «система». Наивысшие права для задачи не нужны.
На вкладке «Триггеры» будет самое интересное. Нажимаем кнопку «Создать», в открывшемся окне в выпадающем списке «Начать задачу:» выбираем «При событии». В «Дополнительных параметрах» можно настроить отложенный запуск, я поставил 15 секунд, но потом менял это значение на 5 секунд, потому что надоело ждать, когда тестировал всё это. В «Параметрах» выбираем «Настраиваемое», чуть правее нажимаем «Создать фильтр события».
Появится окно создания фильтра события. Можно заполнить каркас для фильтра средствами, представленными на вкладке «Фильтр», а потом перейти к XML-представлению созданного фильтра. Выбираем в поле журналов событий следующее: «Журналы приложений и служб»/«Microsoft»/«Windows»/«Network Profile»/«Выполняется». Ставим возле «Выполняется» галку.
Затем в качестве источника событий выбираем «NetworkProfile». Код события указываем «10000». Выглядеть это должно вот так:
Переходим на вкладку «XML», и видим следующее:
Необходимо отредактировать это, иначе триггер будет срабатывать на подключение вообще любой сети, даже на подключение самого PPPoE-подключения. Нажимаем на галку «Изменить запрос вручную». Появится предупреждение, что в дальнейшем мы не сможем воспользоваться вкладкой «Фильтр» для настройки этого фильтра, соглашаемся продолжить, нажимая «Да». Получаем следующее:
В месте, где у меня находится курсор (прямо перед закрывающим тегом ), необходимо добавить ещё одно условие. Дописываем туда « and *[EventData[Data[@Name='Guid']='']] », поменяв мой GUID «» на какой-то свой.
Нажимаем ОК, чтобы закрыть окно настройки фильтра, и ещё раз ОК, чтобы закрыть настройки триггера. Можете выбрать вновь созданный триггер, нажать «Изменить…», и убедиться, что в дополнительных параметрах осталась включенной настройка «Отложить на:» с нужным количеством времени, у меня эта опция почему-то не сохранилась с первого раза. На вкладке «Действия» нажимаем «Создать», в открывшемся окне выбираем «Запуск программы», затем нажимаем «Обзор…», и указываем, где находится наш .bat-файл. Кстати, вместо того, чтобы создавать .bat-файл, можно было просто написать в поле «Программа или сценарий» команду rasdial, а в поле с аргументами вписать «MyDearProvider login password», это было бы эквивалентно запуску .bat-файла. Однако, мне кажется, удобнее править текстовый файл, чем бродить по настройкам планировщика задач в поисках нужного поля.
Нажимаем ОК, и затем переходим на вкладку «Условия». Здесь убираем галку «Запускать только при питании от электросети», если это не нужно. Устанавливаем опцию «Запускать только при подключении к следующей сети:» — ставим ту сеть, которую только что настраивали. В этом нет необходимости, так как фильтр, настроенный ранее, уже содержит в себе это условие, однако, мало ли что может пойти не так, я решил оставить эту настройку включенной.
И, наконец, вкладка «Параметры». Здесь можно оставить включенными «Разрешать выполнение задачи по требованию» и «Принудительная остановка задачи, если она не останавливается по запросу». Нужно снять галку с «Останавливать задачу, выполняемую дольше:». Для того, чтобы избежать такого случая, как «невозможно подключение с первого раза», можно включить галку «При сбое выполнения перезапускать через:», и выставить какой-то период ожидания, например, 1 минуту. Количество попыток перезапуска я поставил 6. Думаю уж за 6 минут-то должно подключиться.
Наконец, нажимаем «Ок», и получаем необходимое.
Справа нужно нажать на надпись «Включить журнал всех заданий», это поможет при отладке выполнения задачи. После настройки журнал можно отключить. Переходим в «Центр управления сетями и общим доступом».
Cлева нажимаем «Изменение параметров адаптера», и попадаем в «Сетевые подключения». Выбираем «Подключение по локальной сети», отключаем его. Затем заново включаем и ждём 15 секунд (или столько, сколько настроили в триггере). Под названием PPPoE-подключения через некоторое время должен измениться статус подключения, а в журнале планировщика задач более-менее описаны происходящие события. Далее Вы можете проверить, как компьютер ведёт себя, перезагрузив его, и дождавшись, когда появится приглашение выбрать пользователя. Если подождать некоторое время, не выбирая пользователя, винда всё равно должна подключиться к PPPoE, даже если ни один пользователь не вошёл в систему. Если у вас статический IP-адрес, тогда проверить, что компьютер подключен к интернету, легче. В моём же случае IP-адрес выдаётся динамически, поэтому я использую DDNS-сервис. Итак, засекаем, сколько сейчас времени, чтобы потом знать, откуда смотреть логи в журнале задания, и перезагружаем компьютер. К сожалению, в случае, когда задание выполняется от системы или от другого пользователя, отключить PPPoE-соединение будет возможно только выполнив команду «rasdial MyDearProvider /disconnect» от администратора.
ЗаключениеДля чего Вам это нужно – решайте сами. Мне, например, это было нужно, чтобы заходить по VNC на комп и иметь возможность перезагрузить его в случае необходимости. Для тех, кто хочет поэкспериментировать с WiFi-подключением – необходимый журнал находится здесь: «Журналы приложений и служб»/«Microsoft»/«Windows»/«WLAN-AutoConfig»/«Operational». Там можно отловить подключение к какой-то WiFi-сети по её SSID. UPD: Здесь кроется одно «но»: в журнал NetworkProfile не записывается код 10000 в случае, если Windows выходит из режима гибернации. Однако Windows 7 записывает событие с номером 300 в журнал Microsoft-Windows-Diagnostics-Performance. Вы можете просто добавить ещё один триггер для включения задачи. Это вполне применимо, если компьютер стационарный.