Вкладка конфиденциальности с использованием AppleScript

Я пытаюсь получить доступ к вкладке «Конфиденциальность» -> «Доступность» с помощью Applescript. Может кто-нибудь мне помочь? Мне нужно отобразить список всех программ в разделе Специальные возможности, Камера, Микрофон, Фото и так далее. Сам запрос и вывод в терминале с использованием osascript -e

Думаю, но не правильно

osascript -e 'tell application "System Events" to get the value of static text 1 of UI element 1 of rows of table 1 of scroll area 1 of group 1 of tab group 1 of window 1 of application process "System Preferences"'

2 ответа

Необходимо исключить взаимодействие с GUI.

Тестирование с удаленной системой под управлением macOS Big Sur 11.6 и проверка [√] Разрешить полный доступ к диску для удаленных пользователей в Системных настройках > Общий доступ > Удаленный вход в удаленной системе , затем пример кода сценария оболочки, выполненного в Терминале в локальной системе в а ssh сессия на удаленной системе даст вам необработанный дамп , что перечислены в разделе доступности в System Preferences > Безопасность и конфиденциальность > Конфиденциальность без необходимости пользовательского интерфейса сценариев с AppleScript .

      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.Terminalcom.latenightsw.ScriptDebugger8

Однако, если вам действительно нужно использовать AppleScript, вы можете сказать, что вам нужен красивый вывод . Другими словами, использование сценария 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Работа с ошибками»задержки delay 0.5, С значением от задержки устанавливается соответствующим образом .

Вы должны избегать вложенных кавычек следующим образом. И активируйте Системные настройки.

      osascript -e "
  tell application id \"com.apple.systempreferences\"
    activate
    reveal anchor named \"Privacy_Accessibility\" in pane id \"com.apple.preference.security\"
  end tell"
Другие вопросы по тегам