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; } }
最后看一下效果:
代码下载地址可以去我gitee上下载:https://gitee.com/panwangvie