如何通过默认命令列出某个域应用程序上所有可用的.plist键?


17

我想知道某些域应用程序上可用的所有密钥(属性列表),例如,我可以com.apple.dock通过输入以下命令列出可用的密钥:

$ defaults read com.apple.dock

但是该命令的输出仅以某种方式显示了活动属性列表键,而没有com.apple.dock列出所有可用键。

有人可以帮我吗?


你介意我改写吗。您问的是编写消息的工具,而不是有关如何对读取消息的程序进行反向工程。默认情况下,该程序将忽略您不希望看到的默认值。您可以将莎士比亚嵌入到finder首选项中,只要将其写入文件就有效,只要它是有效的plist XML,它就不会高兴。
bmike

@bmike我意识到这一点。我感兴趣的是应用程序实际使用的值列表。我以为Apps内的主配置文件中可能有完整的清单。
awesomo 2011年

值列表仅存在于每个程序的源代码中。您是否有一个感兴趣的程序?一旦它们被编译,二进制文件中的字符串键就被编码,并与其他字符串混合在一起。没有什么可以阻止程序作者包括列表的,因为可以轻松地将其添加到任何给定应用程序中存在的Contents / Resources文件夹中。实际上,这并不广泛。
bmike

您也可以比较的输出defaults read以找到普通首选项的键或使用CFPreferencesCopyValuegdb中的方法。请参阅如何探索更多默认设置,并在OS X上进行调整。-超级用户
Lri 2012年

您也可以比较的输出,defaults read以查找普通首选项的键,在框架的二进制文件上运行字符串或使用CFPreferencesCopyValuegdb中的方法。请参阅如何探索更多默认设置,并在OS X上进行调整。-超级用户
Lri 2012年

Answers:


7

如果我没有strings记错的话,这不是一件容易的事,人们会在命令行中针对Application 运行实用程序,并寻找与com.domain.FeatureName类似结构的事物。(com.apple.iTunes,ch.cyberduck.Cyber​​Duck,com.panic.Coda等)

管理这些覆盖的最简单的方法可能是使用名为Secrets的“系统偏好设置”窗格。使用此选项可将“首选项窗格”安装到“系统偏好设置”中,并为您提供一个界面,供您选择应用程序并将其设置更改为您的特定偏好。


如果您在那边也回答了这个问题,我会很喜欢-apple.stackexchange.com/questions/19899/…-字符串是尝试对最终用户进行密钥反向工程的最友好方法。
bmike


5

确实没有“可用”键的概念。该应用程序可以自由读取所需的任何键。大多数人通过使用strings应用程序二进制文件查看将尝试读取的密钥来发现“秘密”默认密钥。


是的,这正是我要查找的“秘密”默认键。您能否进一步说明“秘密”钥匙?如果有任何例子,这将非常有帮助。非常感谢你。
wongacid


谢谢!!如果您在此类信息上还有其他重要链接,请告诉我。:-)
wongacid

4

这里的大多数人都希望通过命令行执行所有操作,但是我有一个更实际的建议。

下面介绍的这两个程序列出了Mac OS X应用程序的许多已知的命令行可自定义功能,按应用程序或功能分类。好处是为您提供了功能列表;您无需搜索Google即可了解功能以及修改每个功能所需的命令行顺序。

有一些免费软件或商业应用程序提供图形用户界面,其中列出了可以通过终端修改的大多数自定义选项。要激活这些功能中的任何一个,请使用我正在描述的程序,您可以在应用程序的GUI中进行操作,而根本不需要使用命令行。你不需要了解任何事情defaults write.plist文件。

其中两个应用程序是:

修补匠工具

这是免费的,并且

MacPilot

刚刚使用新的Lion功能进行了更新,价格为20美元。

这些是我拥有和使用的程序。

下载免费的TinkerTool和MacPilot的试用版,然后单击所有选项卡以查看可以自定义的所有功能。这里有太多东西要列出。

在此处输入图片说明

在此处输入图片说明

更新资料

开发人员Frederik Wiker已发布了免费软件应用程序(接受捐赠),用于创建特定于Lion和Mountain Lion的默认写自定义设置;它们中的许多也适用于Mavericks(Mac OS X 10.9)。

下载这些内容,然后查看可以使用哪些自定义设置。

狮子调整

山区调整

在此处输入图片说明


感谢您的建议。我赞赏替代方法。
awesomo 2011年

您应该真的接受这个/小麦的答案。比我的要早几年。
詹森·萨拉兹

3

也许一个相当长的解释,说明事情如何进行,可能会清除您和其他人对这些“隐藏”偏好的搜索。

大多数应用程序在启动时都将读取其首选项文件,并且defaults存在该工具以确保首选项文件是有效结构且不包含语法错误。(它还允许系统更改密钥的存储方式,并且人们不必知道实现细节,并且可以使用defaults命令进行所有读写。)

英语风格和语法指南可确保我在此处输入的单词对普通英语使用者有意义,并且标准化默认系统可设置框架,使每个人都知道会发生什么。偏好列表格式比人类语言更加严格和数学,但是概念相似。

Mac OS X用户默认系统是键值存储(如果需要,也可以是数据库)。

您可以将任何内容写入这些首选项键值存储,莎士比亚十四行诗,数字,购物清单。如果程序被编码为查找特定键,它将读取存储的值。如果它不是在寻找那个钥匙-它的价值就是坐在那儿未使用和未读。

这带来了如何知道特定程序在启动时可能在寻找什么值。归结为您必须知道其价值或对程序进行反向工程。

存在许多工具可以查看程序并尝试找出嵌入了哪些字符串(键),例如stringsdbx / lldb以及链接到您自己的库中以转储特定程序的内部结构。

实际上,以“隐藏”的方式添加了一些测试所需的内容,因此您无法查看程序的首选项窗格,也不会看到尚未准备广泛使用的这些新功能。从某种意义上说,获得全面的列表绝非易事,除非该程序的作者发布了源代码或以其他方式公开记录了这些设置。

当您阅读特定应用程序的默认存储时,您只是在阅读应用程序创建默认设置或Mac OS X附带的设置时所写的“书”。这就是为什么您不会收到详尽无遗的信息该应用程序实际上可以更改的列表。


2

据我所知,应用程序只会在新密钥与默认密钥不同的情况下存储它,至少这是我的应用程序所做的。这不是容易控制的事情,因为它是User Defaults框架的一部分,因为该应用程序仅告诉用户默认值它需要存储什么内容,其余部分由其他人负责。不幸的是,我认为您所寻找的信息不会轻易获得。虽然可以访问它,但可能很好。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.