Windows 8 中 PPTP VPN 连接的自动重拨

Windows 8 中 PPTP VPN 连接的自动重拨

我已经尝试了几个小时来寻找有关如何自动重新连接到 PPTP VPN 的信息。在 Windows 7 中,有一个自动重新连接的选项以及重拨尝试次数等。

我在 Windows 8 中找不到它。

他们删除了它吗?他们会添加这个功能吗?我必须长时间无人值守地连接我的 vpn。这对我来说是个大问题,如果我找不到解决方案,我将回到 Windows 7。

答案1

我也遇到过类似的问题,因此用 c# 编写了一个小工具来为拨号连接提供重拨功能。您可以从此处下载并使用此工具Windows 8 重拨程序

答案2

我不同意上述 Owen 的回答,因为在将值与 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 “” 用户 ID 密码将在连接失败时启动重新连接过程。

这不是一个“完美”的解决方案,因为它确实依赖于以纯文本形式存储您的 VPN 用户 ID 和密码,但我想如果有人深入我的计算机,我就会遇到比担心一个 VPN 密码更大的麻烦。

答案3

请参阅此处的建议答案 -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,事件 ID:10000

  3. 添加一个操作,使用参数运行“rasdial.exe”VPN名称 用户名 密码

答案4

我将在这里评论上面的答案:

但是如果互联网不能立即重新连接怎么办?例如,它断开了一段时间 - 那么这个任务就会失败一次并停止 - 你会回到电脑前,却看不到互联网(这就是我的情况)

。我正在检查错误代码,因为如果我故意断开 VPN,我不希望重新连接该作业,这会在事件 ID 20226 下生成 631 代码。

那么为什么那个人不直接排除代码 631,而是检查除 631 之外的所有可能的代码呢?

因此我对其进行了一些修复,以便在事件 ID 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>

相关内容