我有一个 wifi 连接,需要在建立无线链接后使用 Web 表单进行身份验证。我知道如何通过使用curl
/的脚本自动进行身份验证鍵盤。
但是每次我连接到特定的网络连接时,如何让 Windows 调用我的脚本呢?
我还希望在我的脚本的命令行上接收无线配置文件的名称或 ESSID。
答案1
在 Windows Vista 及更高版本中,您可以使用带有事件日志触发器的计划任务来执行此操作。第一个事件将通过连接到网络来触发,您将指定必须连接到哪个网络才能运行该事件。第二个事件将在断开与任何网络的连接时触发。每个事件都将运行您指定的特定任务;可能是您提到的已编写的脚本。
设置连接网络时的事件:
- 打开任务计划程序。你可以
Task Scheduler
在开始菜单搜索框中输入,或者在 下找到它Programs | Accessories | System Tools
。 Create Task
在任务计划程序库中,单击右侧的“操作”面板来创建新任务。为任务命名,如“检测网络连接”或任何你选择的名称
在
Triggers
选项卡上,单击并从下拉框中New...
选择。On an Event
选择以下设置:
- 日志:
Microsoft-Windows-NetworkProfile/Operational
- 来源:
NetworkProfile
- 事件 ID:
10000
- 日志:
- 单击“确定”,然后转到
Conditions
选项卡。 - 勾选
Start only if the following network connection is available
并选择要运行脚本的网络 - 在
Actions
选项卡下,单击New...
,选择Start a program
,输入需要运行的脚本文件位置,然后单击OK
。 - 设置您想要的任何其他任务设置,然后单击
OK
。
设置网络断开事件:
- 按照上述步骤 2-4 操作
- 使用以下事件触发器设置:
- 日志:
Microsoft-Windows-NetworkProfile/Operational
- 来源:
NetworkProfile
- 事件 ID:
10001
- 日志:
- 跳过步骤 6-7,因为您将不再连接到任何网络。因此,此活动将运行任何断开连接的时间任何网络。
- 再次执行步骤 8-9
答案2
Start only if the following network connection is available
Windows 10 周年更新后,该功能似乎已损坏。请使用此自定义触发器:
<QueryList>
<Query Id="0" Path="System">
<Select Path="Microsoft-Windows-NetworkProfile/Operational">
*[System[(EventID=10000)]] and *[EventData[(Data[@Name="Name"]="YOUR-SSID-HERE")]]
</Select>
</Query>
</QueryList>
在企业网络中,使用域名而不是 SSID。在这种情况下,事件的类别将是“域认证”而不是“私有”。
答案3
如果您恰好使用 Thinkpad,您可以利用适用于 Windows 7、Vista 和 XP 的 ThinkVantage Access Connection。
ThinkVantage Access Connection 是 ThinkPad 附带的网络连接管理器软件 - 如果没有,可从其支持网站下载。当您为您的位置创建新的配置文件时,会出现向导会询问您是否要配置一个程序列表,以便在该位置启动已连接。它还提供在断网时终止程序的功能。
请注意,该软件可以配置为在没有任何位置配置文件的情况下工作,这可能是初始状态 - 在这种情况下,无法配置在连接 wifi 时启动的程序列表:您必须创建一个连接配置文件来包含该列表。
根据我自己的经验,我尽量避免使用该软件 - 与不使用软件相比,连接需要更多的时间,并且有时在启动时无法建立新连接(可以通过手动重新连接来修复)。
该软件只适用于thinkpad自带的WIFI驱动。
顺便提一下,这款软件提供在用户登录前建立连接的功能,这是创建个人资料时的一个选项。如果没有这个功能,我不知道是否可行。
答案4
更新 @nhinkle 和 @KRR 的答案:我不得不使用以下 XML 查询,因为 Windows 有时会将 SSID“SSID_5G”的“名称”字段设置为“SSID_5G 2”。改用“说明”匹配(Windows 10,版本 20H2)
<QueryList>
<Query Id="0" Path="System">
<Select Path="Microsoft-Windows-NetworkProfile/Operational">
*[System[(EventID=10000)]] and *[EventData[(Data[@Name="Descrioption"]="SSID_5G")]]
</Select>
</Query>
</QueryList>