我正在开发一个针对 Windows 10 的通用平台应用程序。我在一个运行良好的控制台应用程序中模拟了大部分逻辑,但我在尝试将其引入时遇到“访问被拒绝”异常 metro 系统。
我已经追踪到了 NAudio 库,我用它来获取 Wasapi 环回设备。一切正常,直到我触发 Wasapi 设备上的录制方法。
这是我的第一个 Metro 应用程序,我对应用程序 list 有点困惑。通常我会在 list 中添加提升的安全权限请求,但现在看来我需要使用“功能”和“声明”。我尝试使用 NAudio 作为入口点的类库添加后台任务音频声明。我还尝试启用列出的所有功能。这些方法都没有成功。
正如我所说,这是我的第一个 metro 类型应用程序,因此这可能是一个微不足道的问题,但我们将不胜感激。
最佳答案
TLDR;找到了解决方案,在系统设置中启用麦克风对应用程序的访问。
错误跟踪供引用:经过一点(大量)挖掘,我找到了确切的错误:
An exception of type 'System.UnauthorizedAccessException' occurred in mscorlib.ni.dll but was not handled in user code Additional information: Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))
这是由Mmdevapi.dll抛出的。 NAudio/WASAPI 环回捕获需要我已启用的麦克风功能,但我在系统范围内禁用了麦克风功能作为系统首选项。 系统/隐私/麦克风。更改此设置以允许应用程序使用麦克风修复了此问题。
非常愚蠢,但却让我很头疼。希望这可以在将来节省其他人的时间。
关于适用于 Windows 10 通用应用程序的 C# NAudio,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36540229/