C#打開WiFi熱點,WiFi共享的四種方式總結(一)


拚忘的博客園要開始寫隨筆了,第一期就先講講wifi熱點吧.....

持續更新C#、wpf、.NetCore相關內容,歡迎關注!!

 

C#打開WiFi熱點,WiFi共享的四種方式總結(一)

C#打開WiFi熱點,WiFi共享的四種方式總結(二)

C#打開WiFi熱點,WiFi共享的四種方式總結(三)

C#打開WiFi熱點,WiFi共享的四種方式總結(四)

C# Windows系統 ,WiFi共享的方式,打開WiFi熱點我最近研究總結了又四種方式開啟。

1.通過netsh wlan命令行開啟

2.通過wlanapi接口共享

3.通過Win10 Api開啟,Windows.Devices.WiFiDirect

4.通過Win10 api,Windows.Networking.NetworkOperators.NetworkOperatorTetheringManager 開啟電腦自帶的熱點。

 

一、下面簡單說一下以前最常用的一種方式,基本百度搜一下都是這種方式。

第一種方式在Win7系統下比較常用的,需要網卡支持網絡承載,通過CMD命令啟動。

主要命令:

1、啟用並設定虛擬WiFi網卡:.

netsh wlan set hostednetwork mode=allow ssid=pwj key=12345678

此命令有三個參數,mode:是否啟用虛擬WiFi網卡,改為disallow則為禁用。
                               ssid:無線網名稱,最好用英文。
                               key:無線網密碼,八個以上字符(以12345678為例)。

2、開啟成功后,網絡連接中會多出一個網卡為“Microsoft Virtual WiFi Miniport Adapter”的無線連接。若沒有,只需更新無線網卡驅動了。
3、設置Internet連接共享:
在“網絡連接”窗口中,右鍵單擊已連接到Internet的網絡連接,選擇“屬性”→“共享”,勾上“允許其他······連接(N)”並選擇“虛擬WiFi”。
確定之后,提供共享的網卡圖標旁會出現“共享的”字樣,表示“寬帶連接”已共享至“虛擬WiFi”。
4、開啟無線網絡:
繼續在命令提示符中運行:netsh wlan start hostednetwork
(將start改為stop即可關閉該無線網,以后開機后要啟用該無線網只需再次運行此命令即可)

 

如何查看網卡是否支持承載,通過CMD執行netsh wlan show drivers。

 

相關代碼:新建共享網絡

 public  string executeCmd(string command)
        {
            Process process = new Process
            {
                StartInfo = { FileName = " cmd.exe ", UseShellExecute = false, RedirectStandardInput = true, RedirectStandardOutput = true, CreateNoWindow = true }
            };
            process.Start();
            process.StandardInput.WriteLine(command);
            process.StandardInput.WriteLine("exit");
            process.WaitForExit();
            string str = process.StandardOutput.ReadToEnd();
            process.Close();
            return str;
        }

        /// <summary>
        /// 共享網絡
        /// </summary>
        /// <param name="wifiName">WiFi名稱</param>
        /// <param name="wifiPassword">WiFi密碼(不少於8位)</param>
        /// <returns>"新建共享網絡成功!"||"搭建失敗,請重試!"</returns>
        public  bool AllowWiFi(string wifiName, string wifiPassword, out string createWifiRet)
        {
            createWifiRet = "搭建失敗,請重試!";
            try
            {
                string command = "netsh wlan set hostednetwork mode=allow ssid=" + wifiName.Trim() + " key=" + wifiPassword.Trim();
                string cmdExecRet = executeCmd(command);
                createWifiRet = cmdExecRet;
                if (((createWifiRet.IndexOf("承載網絡模式已設置為允許") > -1) && (createWifiRet.IndexOf("已成功更改承載網絡的 SSID。") > -1)) && (createWifiRet.IndexOf("已成功更改托管網絡的用戶密鑰密碼。") > -1))
                {
                    createWifiRet = "新建共享網絡成功!";
                    return true;
                }
                return false;
            }
            catch (Exception e)
            {
                createWifiRet = e.Message;
                return false;
            }
        }

 

 啟動共享

  /// <summary>
        /// 啟動承載網絡(WiFi)
        /// </summary>
        /// <returns>"已啟動承載網絡!"||"啟動承載網絡失敗,請嘗試新建網絡共享!"</returns>
        public  bool StartWiFi(out string startWifiRet)
        {
            startWifiRet = "啟動承載網絡失敗,請嘗試新建網絡共享!";
            try
            {
                if (executeCmd("netsh wlan start hostednetwork").IndexOf("已啟動承載網絡") > -1)
                {
                    startWifiRet = "已啟動承載網絡!";
                    return true;
                }
                return false;
            }
            catch (Exception e)
            {
                startWifiRet = e.Message;
                return false;
            }
        }

 

停止

 /// <summary>
        /// 禁止共享網絡
        /// </summary>
        /// <returns>disallowWifiRet = "禁止共享網絡成功!"||"操作失敗,請重試!"</returns>
        public  bool DisallowWifi(out string disallowWifiRet)
        {
            disallowWifiRet = "操作失敗,請重試!";
            try
            {
                string command = "netsh wlan set hostednetwork mode=disallow";
                if (executeCmd(command).IndexOf("承載網絡模式已設置為禁止") > -1)
                {
                    disallowWifiRet = "禁止共享網絡成功!";
                    return true;
                }
                return false;
            }
            catch (Exception e)
            {
                disallowWifiRet = e.Message;
                return false;
            }
        }

        /// <summary>
        /// 停止承載網絡(WiFi)
        /// </summary>
        /// <returns>"已停止承載網絡!"||"停止承載網絡失敗!"</returns>
        public  bool StopWiFi(out string stopWifiRet)
        {
            stopWifiRet = "停止承載網絡失敗!";
            try
            {
                if (executeCmd("netsh wlan stop hostednetwork").IndexOf("已停止承載網絡") > -1)
                {
                    return true;
                }
                return false;
            }
            catch (Exception e)
            {
                stopWifiRet = e.Message;
                return false;
            }
        }
View Code

 

 最后看一下效果:

 

代碼下載地址可以去我gitee上下載:https://gitee.com/panwangvie


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM