0

我正在尝试使用 Applescript访问隐私->辅助功能选项卡。谁能帮我?

我需要显示该部分中所有程序的列表:

  • 可访问性
  • 相机
  • 麦克风
  • 相片
  • ETC...

请求本身和终端中的输出使用osascript -e.

有必要排除与 GUI 的交互。这是我设法找到的

osascript -e 'tell application "System Events" to get the name of every login item'

我需要为可访问性找到相同的解决方案吗?并获得与下面的屏幕截图相同的结果。

主要目标是

  1. 本地获取Security & Privacy中包含的信息 2) 通过 SSH 连接到 mac OS 并获取Security & Privacy中包含的信息。如果这不可能,那么如何使用单个 Apple 脚本显示信息。
4

2 回答 2

0

您应该按照以下方式转义嵌套引号。并且,激活系统偏好设置。

osascript -e "
tell application id \"com.apple.systempreferences\"
activate
reveal anchor named \"Privacy_Accessibility\" in pane id \"com.apple.preference.security\"
end tell
tell application id \"sevs\" to tell process \"System Preferences\"
repeat until window \"Security & Privacy\" exists
delay 0.02
end repeat
tell scroll area 1 of group 1 of tab group 1 of window \"Security & Privacy\"
get value of static text 1 of UI element 1 of rows of table 1
end tell
end tell"

或者,如果所需项目(左侧)的所需表格视图(右侧)已经打开,您可以在 Catalina 上使用以下 osascript:

osascript -e "
tell application id \"sevs\" to tell process \"System Preferences\"
set frontmost to true
tell scroll area 1 of group 1 of tab group 1 of window \"Security & Privacy\" to get value of static text 1 of UI element 1 of rows of table 1
end tell"
于 2021-10-13T04:15:50.373 回答
0

有必要排除与 GUI 的交互(在远程系统上)。

使用macOS Big Sur 11.6远程系统进行测试,并在System Preferences > Sharing > Remote Login on the remote system中选中[√] Allow full disk access for remote users,然后在本地系统终端中执行示例shell 脚本代码远程系统会话将为您提供系统偏好设置>安全和隐私>中的可访问性下列出的内容的原始转储 ssh 无需使用AppleScript编写 UI 脚本的隐私

sqlite3 '/Library/Application Support/com.apple.TCC/TCC.db' 'SELECT client FROM access WHERE service="kTCCServiceAccessibility";'

在测试系统上,它的输出是:

/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/AE.framework/Versions/A/Support/AEServer
com.apple.AccessibilityInspector
com.apple.Automator
com.apple.ScriptEditor2
com.apple.Terminal
com.latenightsw.ScriptDebugger8

但是,如果您确实需要使用AppleScript,则可以说您需要输出漂亮。换句话说,使用使用shebang保存为shell 脚本的AppleScript 脚本,同一远程系统上的输出将是例如:#!/usr/bin/osascript

AEServer, Accessibility Inspector, Automator, Script Editor, Terminal, Script Debugger

示例 AppleScript 代码

#!/usr/bin/osascript

set theAccessibilityList to paragraphs of (do shell script "sqlite3 '/Library/Application Support/com.apple.TCC/TCC.db' 'SELECT client FROM access WHERE service=\"kTCCServiceAccessibility\";'")

set theAccessibilityApplicationNamesList to {}
repeat with thisItem in theAccessibilityList
    if thisItem starts with "/" then
        set shellCommand to (do shell script "f=" & quoted form of thisItem & "; echo ${f##*/}")
        set end of theAccessibilityApplicationNamesList to shellCommand
    else
        try
            set end of theAccessibilityApplicationNamesList to the name of application id thisItem
        end try
    end if
end repeat

return theAccessibilityApplicationNamesList

笔记:

我在本地系统创建、保存并使其可执行示例 AppleScript 代码,如上所示,然后使用.scp



注意:示例 AppleScript 代码就是这样,并且没有任何包含的错误处理,不包含任何可能适当的额外错误处理。用户有责任根据需要或需要添加任何错误处理。查看AppleScript 语言指南中的try 语句错误 语句。另请参阅处理错误。此外,在适当的情况下,可能需要在事件之间使用延迟命令,例如,使用延迟 delay 0.5适当设置。

于 2021-10-13T20:12:05.440 回答