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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 19:52:11