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

AXUIElementCopyAttributeValues返回kAXErrorAPIDisabled问题求助

解决kAXErrorAPIDisabled错误的方案

首先明确说:kAXErrorAPIDisabled确实意味着辅助功能API被系统禁用了,这是macOS从Mojave开始加强隐私保护后的常见问题,Catalina 10.15.7的权限管控更严格,咱们一步步来解决:

  • 第一步:手动开启辅助功能权限
    打开「系统偏好设置」→「安全性与隐私」→「隐私」标签页→左侧选择「辅助功能」,然后在右侧列表里找到你的应用(如果是Xcode调试阶段,也可以直接勾选Xcode),把对应的复选框打勾。
    ⚠️ 注意:勾选后最好重启你的应用或者Xcode,不然权限可能不会立即生效。

  • 第二步:在代码中主动检查并请求权限
    不能直接硬调用辅助功能API,要先确认权限状态。可以用AXIsProcessTrustedWithOptions()函数来检查并触发系统的权限请求弹窗,示例代码如下:

    NSDictionary *options = @{(id)AXTrustedCheckOptionPrompt: @YES};
    BOOL isTrusted = AXIsProcessTrustedWithOptions((CFDictionaryRef)options);
    if (!isTrusted) {
        // 权限未授予,这里可以提示用户去系统设置开启,或者等待用户授权
        NSLog(@"请在系统设置中开启辅助功能权限");
        return;
    }
    // 之后再调用你的AXUIElementCopyAttributeValues代码
    CFArrayRef windows;
    AXError result = AXUIElementCopyAttributeValues(self.elementRef, kAXWindowsAttribute, 0, 100, &windows);
    
  • 第三步:配置Info.plist权限描述
    在你的项目Info.plist中添加NSAccessibilityUsageDescription键,值填写你需要使用辅助功能的原因(比如"需要获取窗口信息来提供更好的用户体验")。这个描述会在系统弹出权限请求时显示给用户,让用户明白为什么要授权,提高授权成功率。

  • 调试时的小坑
    如果是用Xcode调试,有时候会遇到权限勾选后仍然报错的情况,这时候可以试试:

    • 完全退出Xcode和你的应用,重新打开
    • 去「辅助功能」列表里先取消勾选,再重新勾选一次
    • 确认你的应用签名是有效的(调试阶段Xcode自动签名一般没问题)

内容的提问来源于stack exchange,提问作者Honeybadger

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 20:02:48