You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 10:07:31