如何在C# Windows应用中控制Windows 10移动热点(Mobile Hotspot)设置
解决方案
方案1:调用WinRT原生API(推荐,可控性更高)
该API并不限制仅WinRT/UWP应用使用,桌面端的WPF、WinForms、控制台项目都可以直接集成,支持Windows 10 1709及以上版本系统。
- 安装对应NuGet包:
如果你使用.NET 6+,安装Microsoft.Windows.SDK.NET.Ref,版本匹配你需要支持的最低Windows系统版本即可
如果你使用.NET Framework 4.6.1+,安装Microsoft.Windows.SDK.Contracts - 核心实现代码:
using Windows.Networking.NetworkOperators; using Windows.Devices.WiFi; // 首先获取当前WiFi适配器 var wifiAdapters = await WiFiAdapter.FindAllAsync(); if (wifiAdapters.Count == 0) return; var firstAdapter = wifiAdapters[0]; // 初始化热点管理器 var tetheringManager = NetworkOperatorTetheringManager.CreateFromWiFiAdapter(firstAdapter); // 配置热点SSID和密码 var conf = new NetworkOperatorTetheringAccessPointConfiguration { Ssid = "自定义热点名称", Passphrase = "至少8位的密码", Band = TetheringWiFiBand.Auto // 可根据需求指定2.4G或5G频段 }; await tetheringManager.ConfigureAccessPointAsync(conf); // 启动热点 var result = await tetheringManager.StartTetheringAsync(); if (result.Status == TetheringOperationStatus.Success) { // 启动成功逻辑 } // 停止热点调用下方方法即可 // await tetheringManager.StopTetheringAsync();
方案2:调用PowerShell命令(无需额外依赖,兼容性好)
如果不想引入WinRT相关依赖,可以直接调用Windows自带的PowerShell命令实现控制,支持Windows 10 2004及以上版本。
核心实现代码:
using System.Diagnostics; // 设置热点SSID和密码 var setProcess = new ProcessStartInfo { FileName = "powershell.exe", Arguments = "-Command \"Set-MobileHotspot -Ssid '自定义热点名' -Passphrase '自定义密码'\"", UseShellExecute = false, CreateNoWindow = true, Verb = "runas" // 申请管理员权限 }; Process.Start(setProcess)?.WaitForExit(); // 启动热点 var startProcess = new ProcessStartInfo { FileName = "powershell.exe", Arguments = "-Command \"Start-MobileHotspot\"", UseShellExecute = false, CreateNoWindow = true, Verb = "runas" }; Process.Start(startProcess)?.WaitForExit(); // 停止热点执行Stop-MobileHotspot命令即可
注意事项
- 两种方案都要求应用运行时具备管理员权限,修改网络配置属于系统级操作,无权限会执行失败
- 你已经确认目标PC手动开启移动热点正常,无需额外处理网卡兼容性问题
- 如果需要获取热点当前运行状态,可以通过
NetworkOperatorTetheringManager.TetheringOperationalState属性读取,或者执行PowerShell命令Get-MobileHotspot获取状态信息
内容的提问来源于stack exchange,提问作者Yaron Habot
相关产品推荐
相关产品推荐

