拚忘的博客園要開始寫隨筆了,第一期就先講講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; } }
最后看一下效果:
代碼下載地址可以去我gitee上下載:https://gitee.com/panwangvie