美文网首页
使用cmd连接wifi(netsh命令)

使用cmd连接wifi(netsh命令)

作者: 哆啦A梦没有毛 | 来源:发表于2018-02-09 19:05 被阅读3742次

    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

    使用命令行加配置文件的方式连接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();  
            }  
        }  
    }  
    

    参考资料:

    相关文章

      网友评论

          本文标题:使用cmd连接wifi(netsh命令)

          本文链接:https://www.haomeiwen.com/subject/cokqtftx.html