4

Я часами пытался найти какую-либо информацию о том, как автоматически подключиться к PPTP VPN. В Windows 7 была возможность автоматического переподключения и количества попыток повторного набора и т.д.

Я не могу найти это в Windows 8.

Они удалили это? Они собираются добавить эту функциональность? Я должен иметь свой VPN подключен в течение длительного времени без присмотра. Для меня это соглашение, я вернусь к Windows 7, если не смогу найти решение.

4 ответа4

3

Я тоже столкнулся с подобной проблемой и, следовательно, кодировал небольшой инструмент в C #, чтобы обеспечить функцию повторного набора для установления соединения. Вы можете скачать и использовать этот инструмент здесь Windows 8 Redialer

2

Смотрите предлагаемый ответ здесь - http://social.technet.microsoft.com/Forums/en-US/W8ITProPreRel/thread/771eeb9a-77e6-428f-8e23-3433d1421757/

Вкратце:

  1. Используя планировщик заданий, добавьте запланированное задание.
  2. Добавьте два триггера для запланированной задачи. Один из них использует расширенный XML-запрос <QueryList> <Query Id="0" Path="Application"> <Select Path="Application">*[System[Provider[@Name='RasClient'] and (EventID=20226)]] and *[EventData[Data[4]='829' or '629']]</Select> </Query> </QueryList>

    и другой запуск в журнале событий: Microsoft-Windows-NetworkProfile/Operational, источник: NetworkProfile, код события: 10000

  3. Добавьте одно действие, чтобы запустить "rasdial.exe" с параметрами vpn-name username password
2

Я не согласен с ответом Оуэна выше, потому что использую "не равно" (!=) Команда не работает при сравнении значения с элементом EventData. Запрос вернул ноль результатов.

Я, однако, пришел с ответом, который находит все события с EventID 20226 (Завершение соединения RAS) или EventID 20227 (Ошибка соединения RAS при подключении)

Хитрость заключается в том, чтобы затем подавить те результаты, которые имеют EventID = 20226 с элементом данных 631 (порт был отключен пользователем)

Таким образом, в основном вы получаете все события 20226 и 20227, а затем из этого списка отклоняете результаты 20226 с ошибкой 631

Это работает хорошо, поскольку с rasClient связано около 150 кодов ошибок (https://support.microsoft.com/en-us/kb/163111), и единственное, что я не хочу инициировать перезагрузку, это когда я отключаю соединение (631).

Вот запрос, который я придумал. Тестирование в средстве просмотра событий; кажется, соответствует всем необходимым критериям.

<QueryList>
  <Query Id="0" Path="Application">
    <Select Path="Application">*[System[Provider[@Name='RasClient'] and (EventID=20226 or EventID=20227)]] </Select>
    <Suppress Path="Application">*[System[Provider[@Name='RasClient'] and (Level=4 or Level=0) and (EventID=20226)]]and *[EventData[Data[4]='631']]
</Suppress>
  </Query>
</QueryList>

Использование этого в качестве триггера для действия Запустите программу C:\Windows\System32\rasdial.exe «». UserID Пароль запустит процесс переподключения всякий раз, когда соединение не устанавливается.

Это не «идеальное» решение, поскольку оно основано на хранении вашего идентификатора пользователя и пароля VPN в виде простого текста, но я полагаю, что если кто-то проник настолько глубоко в мой компьютер, у меня больше проблем, чем беспокоиться об одном пароле VPN.

0

Я прокомментирую ответ выше здесь:

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

, Я проверяю коды ошибок, потому что не хочу, чтобы задание было повторно подключено, если я намеренно отключаю VPN, которая генерирует код 631 под идентификатором события 20226.

Тогда почему этот парень не исключает код 631 вместо проверки всех возможных кодов, кроме 631?

поэтому я исправил это немного, чтобы также повторно подключиться к событию с идентификатором 20227 (неудачная попытка набора номера) и просто исключить самодельные разъединения:

<QueryList>
  <Query Id="0" Path="Application">
    <Select Path="Application">*[System[Provider[@Name='RasClient'] and (EventID=20226 or EventID=20227)]] and *[EventData[Data[4]!='631']]</Select>
  </Query>
</QueryList>

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .