我已经尝试了几个小时来寻找有关如何自动重新连接到 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/
简单来说:
- 使用任务计划程序,添加计划任务。
为计划任务添加两个触发器。一个使用高级 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
- 添加一个操作,使用参数运行“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>