如何在C#中实现WiFi网络连接并反馈连接结果?
在C#中连接WiFi并返回连接状态
方案一:调用系统netsh命令(桌面应用通用)
这种方式无需额外依赖,通过执行系统自带的netsh命令实现WiFi连接,适合大多数Windows桌面场景。
代码示例
using System; using System.Diagnostics; using System.Text; public class WiFiConnector { public static string ConnectToWiFi(string ssid, string password) { string command = $"wlan connect ssid=\"{ssid}\" name=\"{ssid}\" keyMaterial=\"{password}\""; ProcessStartInfo psi = new ProcessStartInfo("netsh", command) { RedirectStandardOutput = true, RedirectStandardError = true, UseShellExecute = false, CreateNoWindow = true, StandardOutputEncoding = Encoding.UTF8, StandardErrorEncoding = Encoding.UTF8 }; using (Process process = Process.Start(psi)) { string output = process.StandardOutput.ReadToEnd(); string error = process.StandardError.ReadToEnd(); process.WaitForExit(); if (output.Contains("已成功连接到")) { return "连接成功"; } else if (error.Contains("密码错误") || output.Contains("密码错误")) { return "密码错误"; } else if (output.Contains("找不到指定的网络")) { return "未找到指定WiFi网络"; } else { return $"连接失败:{error}{output}"; } } } public static void Main() { string result = ConnectToWiFi("你的WiFi名称", "你的WiFi密码"); Console.WriteLine(result); } }
说明
- 命令中的
name参数需与ssid一致,用于匹配已保存的配置文件(无配置时自动创建临时配置) - 中文系统用示例关键词判断,英文系统需替换为"successfully connected"、"incorrect password"等对应文本
- 首次连接未保存的网络可能需要管理员权限
方案二:使用UWP WiFi API(Windows 10及以上)
针对Windows 10/11平台,可直接调用官方Windows.Devices.WiFi API,无需依赖命令行,功能更灵活。
代码示例
using System; using System.Threading.Tasks; using Windows.Devices.WiFi; using Windows.Networking.Connectivity; public class WiFiUwpConnector { public static async Task<string> ConnectToWiFiAsync(string ssid, string password) { var adapters = await WiFiAdapter.FindAllAdaptersAsync(); if (adapters.Count == 0) { return "未找到可用的WiFi适配器"; } WiFiAdapter adapter = adapters[0]; await adapter.ScanAsync(); var availableNetworks = adapter.NetworkReport.AvailableNetworks; WiFiAvailableNetwork targetNetwork = null; foreach (var network in availableNetworks) { if (network.Ssid.Equals(ssid, StringComparison.OrdinalIgnoreCase)) { targetNetwork = network; break; } } if (targetNetwork == null) { return "未找到指定WiFi网络"; } var connectResult = await adapter.ConnectAsync( targetNetwork, WiFiReconnectionKind.Automatic, password); switch (connectResult.ConnectionStatus) { case WiFiConnectionStatus.Success: return "连接成功"; case WiFiConnectionStatus.InvalidCredential: return "密码错误"; case WiFiConnectionStatus.NetworkNotAvailable: return "网络不可用"; default: return $"连接失败:{connectResult.ConnectionStatus}"; } } public static async Task Main() { string result = await ConnectToWiFiAsync("你的WiFi名称", "你的WiFi密码"); Console.WriteLine(result); } }
注意事项
- 需添加对
Windows.winmd的引用(路径:C:\Program Files (x86)\Windows Kits\10\UnionMetadata\Windows.winmd) - 应用需启用
Internet (Client)和Private Networks (Client & Server)权限(在Package.appxmanifest中配置) - 仅支持Windows 10 1709及以上版本
内容的提问来源于stack exchange,提问作者J. W.
相关产品推荐
相关产品推荐

