UWP应用调用Native WiFi API时出现访问被拒绝错误求助
解决UWP中使用ManagedNativeWifi库时WlanOpenHandle权限拒绝问题
问题原因
UWP应用运行在严格的沙箱环境中,直接调用Win32 Native WiFi API(如WlanOpenHandle)会被沙箱拦截,即使配置了wiFiControl权限也无法绕过这个限制——ManagedNativeWifi本质是封装原生Win32 API,不符合UWP的安全模型,所以会触发"Access is denied"错误。
解决方案
方案1:改用UWP官方WiFi API
UWP提供了专门的WiFi操作命名空间Windows.Devices.WiFi,完全适配沙箱环境,无需依赖第三方库。示例代码如下:
using Windows.Devices.WiFi; using System.Threading.Tasks; public async Task ScanWifiNetworks() { // 先请求WiFi访问权限 var accessStatus = await WiFiAdapter.RequestAccessAsync(); if (accessStatus != WiFiAccessStatus.Allowed) { // 权限未授予,提示用户或处理错误 return; } // 获取可用WiFi适配器 var adapters = await WiFiAdapter.FindAllAdaptersAsync(); if (adapters.Count == 0) { // 无可用WiFi硬件 return; } // 扫描WiFi网络 await adapters[0].ScanAsync(); // 遍历扫描结果 foreach (var network in adapters[0].NetworkReport.AvailableNetworks) { string ssid = network.Ssid; int signalStrength = network.NetworkRssiInDecibelMilliwatts; // 处理网络信息... } }
方案2:为.NET Standard库做平台适配
如果需要复用现有.NET Standard库的逻辑,可通过接口抽象+平台实现的方式隔离差异:
- 在.NET Standard库中定义WiFi扫描接口(如
IWifiScanner) - 控制台项目中实现该接口,继续使用ManagedNativeWifi
- UWP项目中实现该接口,调用上述UWP官方API
权限配置补充
确保UWP应用清单中的权限配置正确,除了已有的权限,无需额外添加其他权限;注意WiFiControl权限需要用户在运行时授权,代码中必须通过WiFiAdapter.RequestAccessAsync()主动请求。
内容的提问来源于stack exchange,提问作者user1007522
相关产品推荐
相关产品推荐

