Wifi WPS客户端在Windows 10中以脚本或代码启动
我找不到如何在Windows 10中从命令提示符或powershell启动WPS客户端。当我使用Linux时,使用wla_supplicant(wpa_cli wps_pbc)一切都非常简单。Windows中有类似的东西吗 有人知道如何在Windows中设置Wi-Fi网络(通过WPS)密钥而无需人工输入吗 我还尝试了Microsoft的WCN(),因为它实现了WPS功能。我也得到了,但他们无法通过WPS获得密钥(失败)。但如果我使用Windows用户界面连接wiothout PIN,一切似乎都很好Wifi WPS客户端在Windows 10中以脚本或代码启动,windows,powershell,scripting,wifi,wps,Windows,Powershell,Scripting,Wifi,Wps,我找不到如何在Windows 10中从命令提示符或powershell启动WPS客户端。当我使用Linux时,使用wla_supplicant(wpa_cli wps_pbc)一切都非常简单。Windows中有类似的东西吗 有人知道如何在Windows中设置Wi-Fi网络(通过WPS)密钥而无需人工输入吗 我还尝试了Microsoft的WCN(),因为它实现了WPS功能。我也得到了,但他们无法通过WPS获得密钥(失败)。但如果我使用Windows用户界面连接wiothout PIN,一切似乎都很
我确信有可能做到这一点,从命令提示符或应用程序(C++/C#)启动按钮执行Wifi保护设置非常重要,无需人工干预或输入(一旦WPS播放,Windows应自动获取网络密钥并连接)。我不知道现在回答是否为时已晚,把我知道的放在这里,希望能有所帮助 首先,如果您的系统已更新至16299(秋季创建者更新),您只需使用UWP提供的新wifi api即可。 安装最新的Windows SDK,创建一个C#控制台项目,将C#版本至少定为7.1,然后向该项目添加两个引用
using System;
using System.Threading.Tasks;
using Windows.Devices.Enumeration;
using Windows.Devices.WiFi;
class Program
{
static async Task Main(string[] args)
{
var dic = await DeviceInformation.FindAllAsync(WiFiAdapter.GetDeviceSelector());
if (dic.Count > 0)
{
var adapter = await WiFiAdapter.FromIdAsync(dic[0].Id);
foreach (var an in adapter.NetworkReport.AvailableNetworks)
{
if (an.Ssid == "Ssid which you want to connect to.")
{
// Fouth parameter which is ssid can not be set to null even if we provided
// first one, or an exception will be thrown.
await adapter.ConnectAsync(an, WiFiReconnectionKind.Manual, null, "",
WiFiConnectionMethod.WpsPushButton);
}
}
}
}
}
构建并运行exe,然后按下路由器按钮,您的电脑将连接到路由器
但如果您无法更新到16299,WCN将是您唯一的选择。您可能已经注意到,如果使用按钮方法调用IWCNDevic::Connect first,WSC(Wifi简单配置)会话将失败。这是因为WNC不会以注册者的身份启动按钮式会话,而只是以注册者的身份启动。这意味着您必须确保在调用IWCNDevic::Connect之前已按下路由器的按钮。方法是使用本机Wifi api反复扫描路由器,从扫描结果中分析最新的WSC信息元素,确认选定的注册器属性已设置为true,设备密码Id属性已设置为4。之后,查询IWCN设备并调用Connect函数将成功。然后,您可以调用IWCNDevice::GetNetworkProfile以获取可用于连接到路由器的配置文件。因为代码太多,我只列出将要使用的主要wifi api
- WlanEnuminterfaces:用于获取可用的wifi接口
- WlanRegisterNotification:用于注册回调以处理扫描连接结果
- WlanScan:用于扫描指定的wifi BSS
- WlanGetNetworkBsslist:用于在扫描后获取最新的BSS信息
- WlanSetProfile:用于保存BSS的配置文件
- WlanConnect:用于连接到BSS
关于WSC信息元素及其属性,您可以从中找到所有信息。我不知道现在回答是否为时已晚,请将我知道的内容放在这里,希望能有所帮助 首先,如果您的系统已更新至16299(秋季创建者更新),您只需使用UWP提供的新wifi api即可。 安装最新的Windows SDK,创建一个C#控制台项目,将C#版本至少定为7.1,然后向该项目添加两个引用
using System;
using System.Threading.Tasks;
using Windows.Devices.Enumeration;
using Windows.Devices.WiFi;
class Program
{
static async Task Main(string[] args)
{
var dic = await DeviceInformation.FindAllAsync(WiFiAdapter.GetDeviceSelector());
if (dic.Count > 0)
{
var adapter = await WiFiAdapter.FromIdAsync(dic[0].Id);
foreach (var an in adapter.NetworkReport.AvailableNetworks)
{
if (an.Ssid == "Ssid which you want to connect to.")
{
// Fouth parameter which is ssid can not be set to null even if we provided
// first one, or an exception will be thrown.
await adapter.ConnectAsync(an, WiFiReconnectionKind.Manual, null, "",
WiFiConnectionMethod.WpsPushButton);
}
}
}
}
}
构建并运行exe,然后按下路由器按钮,您的电脑将连接到路由器
但如果您无法更新到16299,WCN将是您唯一的选择。您可能已经注意到,如果使用按钮方法调用IWCNDevic::Connect first,WSC(Wifi简单配置)会话将失败。这是因为WNC不会以注册者的身份启动按钮式会话,而只是以注册者的身份启动。这意味着您必须确保在调用IWCNDevic::Connect之前已按下路由器的按钮。方法是使用本机Wifi api反复扫描路由器,从扫描结果中分析最新的WSC信息元素,确认选定的注册器属性已设置为true,设备密码Id属性已设置为4。之后,查询IWCN设备并调用Connect函数将成功。然后,您可以调用IWCNDevice::GetNetworkProfile以获取可用于连接到路由器的配置文件。因为代码太多,我只列出将要使用的主要wifi api
- WlanEnuminterfaces:用于获取可用的wifi接口
- WlanRegisterNotification:用于注册回调以处理扫描连接结果
- WlanScan:用于扫描指定的wifi BSS
- WlanGetNetworkBsslist:用于在扫描后获取最新的BSS信息
- WlanSetProfile:用于保存BSS的配置文件
- WlanConnect:用于连接到BSS
关于WSC信息元素及其属性,可以从./p>找到所有的信息。为什么这里有一个C++标签?从SDK示例中的WCN实现是用C++编写的。为什么这里有一个C++标签?C++中的SDK示例的WCN实现是用C++编写的,谢谢!听起来很棒!但我不知道什么是SSID。。。因此,这个
an.Ssid==“Ssid中你想连接的部分。”
真的很烦人,但它解决了我的问题!谢谢谢谢,听起来很棒!但我不知道什么是SSID。。。因此,这个an.Ssid==“Ssid中你想连接的部分。”
真的很烦人,但它解决了我的问题!谢谢