[macOS翻译]macOS IOHIDManager的权限问题

597 阅读2分钟

本文由 简悦SimpRead 转码,原文地址 nachtimwald.com

有一天,我正在使用一个USB-HID设备,我觉得我的机器开始表现得很奇怪.......。

介紹

有一天,我正在使用一个USB-HID设备,我觉得我的机器开始表现得很奇怪。我可以在Windows虚拟机中使用该设备,但当我的应用程序试图使用该设备时,它却无法打开它。

在这一点上,我知道该设备是好的,我的机器应该是好的,但该设备无法使用。我试着用其他软件来检查设备,它也以与我的应用程序相同的方式失败。

拦截器

经过大量的追踪,我终于发现 "IOHIDManagerOpen "的调用以 "kIOReturnNotPermitted "失败。这没有什么意义,因为其他应用程序(VMWare)可以使用USB设备。另外,系统信息工具可以列出所有连接的USB设备。所以这一定是我的应用程序的问题。然而,它在其他人的机器上工作正常。

不幸的是,在谷歌上搜索 "IOHIDManagerOpen "和 "kIOReturnNotPermitted "并没有找到任何有用的信息。有关于沙盒的信息,但并不适用,其他的就不多了。

我决定尝试在Xcode中运行我的应用程序,幸运的是这给了我一些额外的系统调试。它给了我一个错误 "TCC deny "错误! 现在我知道了发生了什么。通过谷歌搜索,我能够清楚地了解到发生了什么事。

解决方案

显然,使用IOHIDManager需要 "输入监控 "的隐私权限。在我的系统中,终端机禁用了这个权限。由于我是从控制台运行的,我运行的任何东西都会继承终端本身的权限。因此,我试图运行的任何东西都不允许使用IOHIDManager

打开 "安全与隐私"->"隐私"->"输入监控",并允许 "终端 "解决了一切问题。在这之后,我又能访问我的USB-HID设备了。

起初,我对这一做法感到惊讶。这个权限的描述是 "允许下面的应用程序监控你的键盘输入,即使是在使用其他应用程序时"。我所使用的设备不是键盘...

输入监控 "的权限是通过禁用所有HID访问来实现的。键盘是HID设备,所以不允许对任何HID设备的访问会阻止键盘监控。这就是说,这对隐私来说是一个有点激烈的方法。很多HID设备并不是键盘......


www.deepl.com 翻译