AppleScript用于检测辅助功能设置何时更改

AppleScript用于检测辅助功能设置何时更改,applescript,Applescript,我正在尝试编写一个脚本,每当我的“减少透明度”设置被更改时,它都会提醒我,这样我就可以更好地了解哪些应用程序可能会更改它 我可以手动打开系统首选项,并使用AppleScript切换设置,但我无法读取设置,如果不实际打开新窗口,我无法执行此操作 我看过教程,其中介绍了如何执行各种首选项脚本,但它没有显示可访问性设置的任何内容。这可能需要一些调查工作和耐心。首先,让我告诉您如何使用AppleScript读取和设置“降低透明度”设置: tell application "System Even

我正在尝试编写一个脚本,每当我的“减少透明度”设置被更改时,它都会提醒我,这样我就可以更好地了解哪些应用程序可能会更改它

我可以手动打开系统首选项,并使用AppleScript切换设置,但我无法读取设置,如果不实际打开新窗口,我无法执行此操作


我看过教程,其中介绍了如何执行各种首选项脚本,但它没有显示可访问性设置的任何内容。

这可能需要一些调查工作和耐心。首先,让我告诉您如何使用AppleScript读取和设置“降低透明度”设置:

    tell application "System Events" to ¬
    tell property list file "~/Library/Preferences/com.apple.universalaccess.plist" to ¬
        tell property list item "reduceTransparency"
            get its value -- returns true or false
            set its value to (not result) -- switch its setting
        end tell
get
set
命令执行您期望的操作。当然,您可以用
(非结果)
替换
true
false
的特定值

据我所知,AppleScript无法以您所追求的方式监视系统设置。虽然Cocoa AppleScripting在事件监听方面可以实现更多的功能,但它并不是专门为此而设计的

但是,实际上MacOS中内置了一个名为
opensnoop
的终端命令,该命令“跟踪文件的打开。当进程发出文件打开时,诸如UID、PID和路径名等详细信息会被打印出来。”

这就是调查部分必须进行的地方

运行
sudo opensnoop
(然后输入您的管理员密码),当文件访问发生时,它将打印出文件访问以及有关该访问的大量相关信息(进程ID、请求访问的应用程序的名称等)。这可能会使您负担过重,您不关心的文件有很多无用的信息,还有一堆DTrace错误(我相信这些是由于MacOS的系统完整性保护导致的,它阻止了DTrace读取一些受保护的文件)

因此,您可以尝试使用标志
-f
-n
来指定要监视的特定文件(f)或特定进程(n),例如

    sudo opensnoop -f ~/Library/Preferences/com.apple.universalaccess.plist
然而,很难说你应该观看什么样的文件或过程(毕竟,作为有罪的一方,这是你试图揭露的过程)

因此,您可能最终不得不使用裸的
sudoopensnoop
调用来重载自己,我建议您将其输出写入文本文件。这不仅可以消除最终结果中的任何DTrace错误(尽管这些错误仍然会出现在终端窗口中,但不用担心),还可以让您有机会在以后对其进行梳理并搜索相关术语,看看会出现什么

要执行此操作,请运行以下命令:

    sudo opensnoop > ~/Downloads/snoop.txt
它会将所有数据写入snoop.txt(我选择将其保存在下载文件夹中,以防您的桌面和文档文件夹通过iCloud共享。只要opensnoop继续运行,文本文件就会不断修改,这意味着它也会不断上传到iCloud)

要终止opensnoop的运行,请返回到终端窗口(该窗口必须在此期间保持打开状态,尽管您可以将其最小化),然后按Ctrl-C。然后键入退出,点击返回,然后退出终端


我不能保证这一定会解开你的谜团,但我确实希望它在某种程度上有所帮助。

这可能需要一些调查工作和耐心。首先,让我告诉您如何使用AppleScript读取和设置“降低透明度”设置:

    tell application "System Events" to ¬
    tell property list file "~/Library/Preferences/com.apple.universalaccess.plist" to ¬
        tell property list item "reduceTransparency"
            get its value -- returns true or false
            set its value to (not result) -- switch its setting
        end tell
get
set
命令执行您期望的操作。当然,您可以用
(非结果)
替换
true
false
的特定值

据我所知,AppleScript无法以您所追求的方式监视系统设置。虽然Cocoa AppleScripting在事件监听方面可以实现更多的功能,但它并不是专门为此而设计的

但是,实际上MacOS中内置了一个名为
opensnoop
的终端命令,该命令“跟踪文件的打开。当进程发出文件打开时,诸如UID、PID和路径名等详细信息会被打印出来。”

这就是调查部分必须进行的地方

运行
sudo opensnoop
(然后输入您的管理员密码),当文件访问发生时,它将打印出文件访问以及有关该访问的大量相关信息(进程ID、请求访问的应用程序的名称等)。这可能会使您负担过重,您不关心的文件有很多无用的信息,还有一堆DTrace错误(我相信这些是由于MacOS的系统完整性保护导致的,它阻止了DTrace读取一些受保护的文件)

因此,您可以尝试使用标志
-f
-n
来指定要监视的特定文件(f)或特定进程(n),例如

    sudo opensnoop -f ~/Library/Preferences/com.apple.universalaccess.plist
然而,很难说你应该观看什么样的文件或过程(毕竟,作为有罪的一方,这是你试图揭露的过程)

因此,您可能最终不得不使用裸的
sudoopensnoop
调用来重载自己,我建议您将其输出写入文本文件。这不仅可以消除最终结果中的任何DTrace错误(尽管这些错误仍然会出现在终端窗口中,但不用担心),还可以让您有机会在以后对其进行梳理并搜索相关术语,看看会出现什么

要执行此操作,请运行以下命令:

    sudo opensnoop > ~/Downloads/snoop.txt
它会将所有数据写入snoop.txt(我选择将其保存在下载文件夹中,以防您的桌面和文档文件夹通过iCloud共享。只要opensnoop继续运行,文本文件就会不断修改,这意味着它将不断上传