【问题标题】:Is there a way to check if "System Preferences" is locked?有没有办法检查“系统偏好设置”是否被锁定?
【发布时间】:2020-11-05 01:27:24
【问题描述】:

我想检查“安全和隐私”标签是否在未做任何修改的情况下被锁定或解锁。 我找到了一种使用 AppleScript 的方法:

tell application "System Events"
    tell process "System Preferences"
        if title of button 1 of window 1 is "Click the lock to make changes." then
            log "LOCKED"
        end if
    end tell
end tell

但我收到此错误: “系统事件出错:脚本编辑器不允许辅助访问。”来自进程“系统偏好设置”的窗口 1 的编号 -1719

我希望能够在客户的机器上执行此代码,因此将 Script Editor 添加到 Accessibility 对我来说不是一个选项。

我的问题是有没有办法(objective-c、c++ 或 appleScript)来检查选项卡是否被锁定?

【问题讨论】:

  • 如果 System Preferences 已打开,只需关闭它,这将锁定 tab
  • 系统偏好设置在逐个窗格的基础上解锁;没有通用的“解锁”状态。您应该假设您感兴趣的窗格已锁定,然后继续做您想做的任何事情。通常,系统会提醒最终用户并询问您的应用/脚本所需的权限。

标签: c++ objective-c macos applescript


【解决方案1】:

虽然您可以根据需要编写自己的NSPreferencePane,但您也可以通过打开所需的 PrefPane 以官方方式让用户了解正在发生的事情。因此用户可以自行解锁 PrefPane。

NSURL *url = [NSURL URLWithString:@"x-apple.systempreferences:com.apple.preference.security?Firewall"];
[[NSWorkspace sharedWorkspace] openURL:url];

要获得对应用之外位置的访问权限,您必须申请适当的权利。

以编程方式更改首选项 https://developer.apple.com/library/archive/documentation/CoreFoundation/Conceptual/CFPreferences/CFPreferences.html

【讨论】:

    猜你喜欢
    • 2012-12-23
    • 2010-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-05
    • 2018-01-09
    • 1970-01-01
    • 2020-09-16
    相关资源
    最近更新 更多