使用cmd连接wifi(netsh命令)

Step1.创建配置文件

  • 导出已有配置文件
    netsh wlan export profile key=clear(clear表示以明文方式显示密码)

  • 修改文件

<?xml version="1.0"?>
<WLANProfile xmlns="http://www.microsoft.com/networking/WLAN/profile/v1">
    <name>MI 6</name>
    <SSIDConfig>
        <SSID>
            <name>MI 6</name>
        </SSID>
    </SSIDConfig>
    <connectionType>ESS</connectionType>
    <connectionMode>manual</connectionMode>
    <MSM>
        <security>
            <authEncryption>
                <authentication>WPA2PSK</authentication>
                <encryption>AES</encryption>
                <useOneX>false</useOneX>
            </authEncryption>
            <sharedKey>
                <keyType>passPhrase</keyType>
                <protected>false</protected>
                <keyMaterial>{password}</keyMaterial>
            </sharedKey>
        </security>
    </MSM>
    <MacRandomization xmlns="http://www.microsoft.com/networking/WLAN/profile/v3">
        <enableRandomization>false</enableRandomization>
    </MacRandomization>
</WLANProfile>

name和SSID可以不同(最好设为一致),name是配置文件名称,SSID是要连接的wifi名;
connectionMode可以为手动连接的manual或者自动连接的auto;
keyMaterial处填写密码,无密码状态如下:

<security>
    <authEncryption>
        <authentication>open</authentication>
        <encryption>none</encryption>
        <useOneX>false</useOneX>
    </authEncryption>
</security>

Step2.添加配置文件

  • 检查配置文件是否已经存在:
    netsh wlan show profile

比较奇葩的是当有两个SSID相同但name不同的配置时,这两个wifi会同时出现在当前可连接的wifi列表中,而且显示的是name名:



所以应当尽量避免这种情况

  • 删除配置文件:
    netsh wlan delete profile name="MI 6 2"
    netsh wlan delete profile name="MI 6"
  • 添加配置文件:
    netsh wlan add profile filename="wifi.xml"
    注意这里面参数是文件名,默认路径为当前目录,添加成功后提示:已将配置文件 MI 6添加到接口 WLAN。

Step3.进行连接

netsh wlan connect name="MI 6"
重要的事情说三遍:这里的name是刚刚添加过的配置文件中的name,而不是配置文件名!而不是配置文件名!而不是配置文件名!因为我刚开始就是栽在这里头了,老是连不上。
连接成功的提示信息为已成功完成连接请求。

常用netsh命令总结:

  • 列出配置文件:netsh wlan show profile
  • 导出配置文件:netsh wlan export profile key=clear
  • 删除配置文件:netsh wlan delete profile name=""
  • 添加配置文件:netsh wlan add profile filename=""
  • 连接wifi:netsh wlan connect name=""
  • 列出接口:netsh wlan show interface
  • 开启接口:netsh interface set interface "Interface Name" enabled
  • 列出所有可连接wifi详细信息:netsh wlan show networks mode=bssid
  • 为cmd/powershell设置代理netsh winhttp set proxy 127.0.0.1:1080
  • 取消代理netsh winhttp reset proxy
  • 查看代理netsh winhttp show proxy

使用命令行加配置文件的方式连接wifi看似没什么卵用,实际用处非常大,比如可以直接在C#中通过此方式取得可连接wifi列表,相比封装的ManagedWifi要简洁得多

using System;  
using System.Diagnostics;  
  
namespace WifiTest  
{  
    class Program  
    {  
        static void Main(string[] args)  
        {  
            Process proc = new Process();  
            proc.StartInfo.CreateNoWindow = true;  
            proc.StartInfo.FileName = "netsh";  
            proc.StartInfo.Arguments = "wlan show networks mode=bssid";  
            proc.StartInfo.RedirectStandardOutput = true;  
            proc.StartInfo.UseShellExecute = false;  
            proc.Start();  
            string output = proc.StandardOutput.ReadToEnd();  
            proc.WaitForExit();  
  
            Console.WriteLine(output);  
            Console.Read();  
        }  
    }  
}  

参考资料:

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,982评论 19 139
  • 最近寝室网不太好,经常莫名其妙的连不上网。害的我上次一个上午没有收集到数据。其实也简单,每次手动在自己寝室和隔壁寝...
    George_Lee阅读 842评论 0 0
  • 我一直都希望,我一转身,只见你一人,站在阳光下对我微笑。那一定是最温暖的笑容。那样的画面一直在我的脑海里回...
    十二妖阅读 302评论 0 0
  • 重庆的雾也终成了霾,一场现代都市的流行病,起因无数却也顺其自然。倒是让人想起90年代初的重庆,或许那时候称为雾霾更...
    入海阅读 273评论 0 0
  • 「如果你没有选项,你那不叫决策,只能叫决心。」
    Gzw丶南山阅读 165评论 0 0