Как вывести список всех доступных ключей .plist в определенном доменном приложении командой default?


17

Я хочу знать все ключи (список свойств), которые доступны в определенном доменном приложении, например, я мог бы перечислить доступные ключи com.apple.dock, введя эту команду:

$ defaults read com.apple.dock

но каким-то образом выходные данные этой команды показали только активный ключ списка свойств, но еще не все доступные ключи для com.apple.dockперечисленных там.

Кто-нибудь может мне помочь в этом?


Вы не возражаете, если я перефразирую это? Вы спрашиваете об инструменте, который пишет сообщения, а не о том, как перепроектировать программу, которая читает сообщения. По умолчанию программа игнорирует все, что вы вводите с настройками по умолчанию, которые она не ожидала увидеть. Вы можете встраивать Шекспира в преферы поиска, и он, к счастью, ничего не будет делать, если это будет действительный plist XML после записи в файл.
bmike

@bmike Я понимаю это. Что меня интересовало, так это список значений, которые фактически использует приложение. Я подумал, что может быть полный список, спрятанный где-нибудь в главном конфигурационном файле внутри Apps.
awesomo

Список значений существует только в исходном коде для каждой программы. У вас есть одна программа, которая вас интересует? Как только они скомпилированы, строковые ключи в двоичном коде кодируются и все смешиваются с другими строками. Ничто не мешает автору Программы включать список, так как его можно легко добавить в папку «Содержимое / Ресурсы», которая существует в любом данном Приложении. На практике это не так широко сделано.
bmike

Вы также можете изменить вывод, defaults readчтобы найти ключи для обычных настроек или использовать CFPreferencesCopyValueметод в GDB. Посмотрите, Как исследовать больше настроек по умолчанию, пишите настройки на OS X? - Супер пользователь .
Lri

Вы также можете различить выходные данные, defaults readчтобы найти ключи для нормальных предпочтений, запустить строки в двоичных файлах фреймворков или использовать CFPreferencesCopyValueметод в gdb. Посмотрите, Как исследовать больше настроек по умолчанию, пишите настройки на OS X? - Супер пользователь .
Lri

Ответы:


7

Это не тривиальная задача, если я правильно помню, что люди запускают stringsутилиту из командной строки для приложения и ищут вещи, которые соответствуют структуре, аналогичной com.domain.FeatureName. (com.apple.iTunes, ch.cyberduck.CyberDuck, com.panic.Coda и т. д.)

Вероятно, самый простой способ управлять этими переопределениями - это панель системных настроек с именем Secrets . Использование этого позволяет установить панель настроек в «Системные настройки» и предоставить вам интерфейс для выбора приложения и изменения его настроек в соответствии с вашими предпочтениями.


Я был бы рад, если бы вы также ответили на это - apple.stackexchange.com/questions/19899/… - strings - это наиболее удобный способ попробовать этот метод обратного инжиниринга ключей для конечных пользователей.
bmike


5

Там действительно нет понятия «доступные» ключи. Приложение может свободно читать любые ключи, которые оно хочет. Большинство людей обнаруживают «секретные» ключи по умолчанию, stringsпросматривая двоичный файл приложения, чтобы увидеть, какие ключи оно будет пытаться прочитать.


да, это именно то, что я хочу найти, «секретные» ключи по умолчанию. Не могли бы вы объяснить подробнее о «секретном» ключе? Это очень полезно, если есть какой-либо пример. Большое спасибо.
wongacid

1
Многие известные примеры перечислены на сайте secretts.blacktree.com
jtbandes,

Благодарность!! дайте мне знать, если у вас есть какая-либо другая замечательная ссылка на эту информацию. :-)
wongacid

4

Большинство людей здесь хотят делать все через командную строку, но у меня есть более практичное предложение.

Эти две программы, описанные ниже, перечисляют множество известных настраиваемых функций командной строки приложений Mac OS X, отсортированных по приложениям или функциям. Преимущество в том, что список функций предоставляется для вас; Вам не нужно искать в Google, чтобы узнать, какие функции и последовательности командной строки необходимы для изменения каждой из них.

Существует несколько бесплатных или коммерческих приложений, которые предоставляют графический интерфейс пользователя, в котором перечислены большинство параметров настройки, которые можно изменить через Терминал. Чтобы активировать любую из этих функций, используя описанные мной программы, вы делаете это в графическом интерфейсе приложения, и вам вообще не нужно использовать командную строку. Вам не нужно ничего знать о defaults writeили.plist файлы.

Два из этих приложений:

TinkerTool

что бесплатно, и

MacPilot

который был только что обновлен с новыми функциями Lion, и стоит 20 долларов США.

Это программы, которыми я владею и пользуюсь.

Загрузите бесплатную версию TinkerTool и пробную версию MacPilot и перейдите на все вкладки, чтобы увидеть все бесчисленные функции, которые вы можете настроить. Здесь слишком много, чтобы перечислять здесь.

введите описание изображения здесь

введите описание изображения здесь

Обновить

Разработчик Фредерик Викер выпустил бесплатные приложения (принимаются пожертвования) для создания настроек по умолчанию и записи, специфичных для Lion и Mountain Lion; многие из них также отлично работают для Mavericks (Mac OS X 10.9).

Загрузите их и посмотрите, какие настройки доступны для вас.

Твики льва

Горные твики

введите описание изображения здесь


Спасибо за рекомендации. Я ценю альтернативный подход.
awesomo

Вы должны действительно принять это / ответ пшеницы. Это светлые годы впереди меня.
Джейсон Салаз

3

Возможно, довольно длинное объяснение того, как все работает, может прояснить ваш и чужой поиск этих «скрытых» предпочтений.

Большинство приложений будут читать свои файлы предпочтений один раз, когда они запускаются, и defaultsинструмент существует, чтобы гарантировать, что файлы предпочтений являются допустимой структурой и не содержат синтаксических ошибок. (Это также позволяет системе изменить способ хранения ключей, и людям не нужно знать подробности реализации, и они могут использовать команду defaults для выполнения всех операций чтения и записи.)

Руководства по стилю английского языка и грамматике гарантируют, что слова, которые я здесь набираю, будут значимыми для среднего говорящего по-английски, а стандартизация системы значений по умолчанию устанавливает основу, чтобы все знали, чего ожидать. Форматирование списка предпочтений гораздо более жесткое и математическое, чем человеческий язык, но концепции схожи.

Система по умолчанию пользователя Mac OS X - это хранилище значений ключей (или база данных, если вы предпочитаете).

Вы можете записать что угодно в эти хранилища значений ключей предпочтений, сонет Шекспира, числа, список покупок. Если программа написана для поиска определенного ключа, она будет считывать сохраненное значение. Если он не ищет этот ключ - его значение остается неиспользованным и непрочитанным.

Это приводит к тому, как узнать, какие значения может искать конкретная программа при запуске. Это сводится к тому, что вы должны знать значение или перепроектировать программу.

Существует множество инструментов, позволяющих заглянуть в программу и попытаться выяснить, какие строки (ключи) встроены, например, stringsdbx / lldb, а также ссылки в вашей собственной библиотеке для вывода внутренней структуры конкретной программы.

На практике некоторые вещи, необходимые для тестирования, добавляются таким «скрытым» способом, чтобы вы не могли просмотреть панель настроек программы и увидеть эти новые функции, которые не готовы для широкого использования. В некотором смысле, получить полный список совсем не просто, если автор этой программы не выпустит исходный код или иным образом не публично документирует эти настройки.

Когда вы читаете хранилище по умолчанию для определенного приложения - вы просто читаете «книгу», которая была написана, когда приложение создавало его набор по умолчанию или настройки, поставляемые с Mac OS X. Вот почему вы не получаете исчерпывающий список вещей, которые реально можно изменить с помощью этого приложения.


2

Насколько я знаю, приложение будет хранить новый ключ, только если он отличается от значений по умолчанию, по крайней мере, так делают мои приложения. Это не то, что можно легко контролировать, поскольку оно является частью инфраструктуры пользовательских настроек по умолчанию, поскольку приложение сообщает пользователям по умолчанию только то, что ему нужно сохранить, и обо всем остальном заботится. Я не думаю, что информация, которую вы ищете, будет легко получена, к сожалению. Хотя было бы неплохо иметь к этому доступ.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.