Aktivieren Sie den Zugriff für Hilfsgeräte programmgesteuert auf 10.9
Ich möchte Zugriff für Hilfsgeräte aktivieren programmgesteuert auf 10.9. Auf 10.8 und niedriger ich wurde mit dem folgenden Applescript Zugriff für Hilfsgeräte aktivieren:
tell application "System Events"
if UI elements enabled is false then
set UI elements enabled to true
end if
end tell
Mit 10.9 hat Apple zog die Eingabehilfen-Optionen System-Einstellungen ➞ Sicherheit & Datenschutz ➞ Datenschutz ➞ Zugänglichkeit. Im Gegensatz zu früheren Versionen von OS X, die verwendet eine Universelle Kontrollkästchen für alle Anwendungen, die neue Funktionen in 10.9 ermöglicht es Benutzern, um individuell auswählen, welche Anwendungen kann die Kontrolle über das system durchführen, um Ihre verschiedenen scripted-Funktionen.
Apple hat KEINE API für Entwickler, um programmgesteuert aktivieren Zugänglichkeit für eine app. Also Mac OS 10.9 wird aufgefordert, ein Dialogfeld für die end-Benutzer die Berechtigung für die Eingabehilfen aktivieren, wenn die Anwendung verwendet die accessibility-APIs. Zusätzlich werden Benutzer starten Sie die Anwendung neu nach der Aktivierung der Barrierefreiheit.
Können wir den Zugriff für Hilfsgeräte aktivieren programmgesteuert auf 10.9 mit Applescript oder jede andere APIs? Jede Hilfe, um dieses Problem zu beheben würde sehr geschätzt werden.
InformationsquelleAutor der Frage Vinpai | 2013-07-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Diese nicht beantworten Ihre Frage, aber es ist gut zu wissen, über eine neue API-Aufruf, erschienen in 10.9 und ermöglicht die Anzeige der Berechtigungs-Bildschirm oder es umgehen:
Vorbei
YES
erzwingt die Autorisierung Bildschirm erscheinen, übergebenNO
wird automatisch überspringen. Der Rückgabewert ist der gleiche wie der zurück durchAXAPIEnabled()
immer veraltet 10.9. Um sicherzustellen, dass die Funktion auf Ihrem system verfügbar ist, vergleichen Sie einfach, es zuNULL
:Müssen Sie
ApplicationServices.framework
zu Ihrem Projekt, und importieren, um Ihre .m oder .h-Datei:Es ist schade, dass die Berechtigungs-Bildschirm nicht lassen den Benutzer zu autorisieren app direkt, es öffnet einfach den rechten Teil des "System Preferences". Die, durch die Art und Weise, die Sie tun können, direkt und ohne Umweg über die nutzlos system-Dialog:
oder mit Objective-C:
Dies kann gekoppelt werden mit der ersten code-snippet, um zu testen, ob
accessibilityEnabled
durch die übergabe@NO
zukAXTrustedCheckOptionPrompt
während verhindert, dass das system pop-up zu erscheinen, und stattdessen öffnen Sie die Eingabehilfen-Einstellungen direkt:InformationsquelleAutor der Antwort zoul
Während @user2865860 Antwort funktioniert gut, dachte ich, ich würde post die gesamte code-Beispiel, das funktioniert perfekt auf 10.9 um andere zu retten einige Zeit. Sie benötigen root-Privilegien, so wird er aufgefordert einen Benutzer und ein Kennwort eingeben.
InformationsquelleAutor der Antwort Max Al Farakh
Bearbeiten können Sie die TCC.db-Datei direkt. Ich musste dies tun, um zu machen Divvy installieren, ohne Benutzer-Interaktion. Ersetzen Sie einfach com.mizage.divvy mit Ihrem Programm.
Entfernen Sie den Eintrag:
InformationsquelleAutor der Antwort user2865860
Habe ich die folgende code-snippet, das Sie richtig fordert Barrierefreiheit Berechtigungen in Mac OS X 10.9:
InformationsquelleAutor der Antwort Sergey L.
War ich mit diesen zu kämpfen, mir und nach ein bisschen recherche habe ich Folgendes gefunden:
Hacking die sqlite-DB hat den großen Nachteil in der Verwendung des Autorisierungs-services. Ersten dieses pop-up ein Dialogfeld, Benutzer sagen, dass eine Anwendung installieren will, ein Dienstprogramm Helfer (auch wenn es nur ein aus dem launchd-Einreichung mit
SMJobSubmit
). Zweite, es funktioniert nicht für Sandbox-apps und somit keine app store.@Max Al Faeakh verwendet
AuthorizationExecuteWithPrivileges
die veraltet ist. Sie benötigen launchd mit den oben genanntenSMJobSubmit
. Wie auch immer, dies Bedarf noch der Autorisierung. Es erfordert auch eine Hilfs-Anwendung wie diese ein.Ich denke, das beste ist zu verwenden entweder:
oder
und öffnen Sie Einstellungen manuell unter Verwendung von zum Beispiel scripting bridge framework:
Den
SBSystemPreferencesPane
Klasse form kommt, kann einSBSystemPreferences.h
- Datei, die generiert werden können:InformationsquelleAutor der Antwort fikovnik
Dank für dieses shell-Skript-Beispiele von @NightFlight, die sind wirklich hilfreich. Früher habe ich dies mit AppleScript in eine Python-Anwendung, wie die folgenden:
Es funktionierte gut für mich in Python-code als string.
Bearbeiten (Nov 7, 2014):
Wenn Sie möchten, um zu versuchen, dies in AppleScript-Editor, verwenden Sie einen etwas anderen Charakter als Flucht unten:
Für Mac OS X vor 10.9 ist, ist es noch einfacher:
Müssen nur Tippen Sie auf eine Datei. Die AppleScript erwähnt in der Python-code oben kann auch verwendet werden in anderen Sprachen.
InformationsquelleAutor der Antwort Jake W
Danke an alle.
Ich Frage die folgenden ausgelöst von der login-Fenster, um sicherzustellen, die Kontrolle ist nur gegeben, um die Dinge, die wir wollen, dass jeder session:
InformationsquelleAutor der Antwort NightFlight
Die sqlite3 "hack" ist groß.
Musste ich Berechtigungen "1,1,1" (was auch immer das bedeutet) um diese Arbeit zu machen.
Beachten Sie, dass die Berechtigung Kombination, nicht auf dem client (ie. Programm-name) ist der eindeutige Datenbank-Schlüssel.
InformationsquelleAutor der Antwort a.out