Как указать значок для использования в диалоге авторизации Keychain - PullRequest
0 голосов
/ 26 марта 2011

Я использую SecKeychainFindGenericPassword(), чтобы получить пароль приложения, ранее сохраненный с помощью SecKeychainAddGenericPassword(). Как и ожидалось, MacOS предоставляет пользователю диалоговое окно с просьбой одобрить доступ к цепочке для ключей. Однако значок, наложенный на нижнюю правую часть замка, является стандартным значком документа, а не значком моего приложения.

Я не вижу ничего в справочнике Keychain Services об указании значка, поэтому я предполагаю, что ОС просто использует значок вашего приложения. В моем файле .icns (указанном в info.plist) есть все возможные размеры и растровые изображения, заполненные в соответствии с иконографом, поэтому я действительно не уверен, где искать дальше.

Надеюсь, что есть очевидная ошибка, на которую кто-то может указать мне?

Ответы [ 3 ]

1 голос
/ 29 марта 2011

Обычно это происходит потому, что ваше приложение запускается из каталога, который не читается другими пользователями.Диалог аутентификации, очевидно, запускается в другом процессе, и он должен иметь возможность получить ваш значок из пакета.

1 голос
/ 13 июня 2012

Это проблема с правами доступа, как упоминал Крис Сутер ранее. Имя значка в списке не имеет значения, файл, указанный в Info.plist пакета приложения, будет использоваться (CFBundleIconFile) в процессе повышения прав (если не указан пользовательский для лифта) Попробуйте на Lion или более новой ОС, и вы обнаружите, что любое приложение, которое вы скопировали в вашем доме, защищено от мира (у которого вообще нет доступа), поэтому лифт не может прочитать значок.

0 голосов
/ 29 марта 2011

До устаревания kSecCustomIconItemAttr в справочнике по связке ключей (2003) было сказано:

kSecCustomIconItemAttr

Идентифицируетпользовательский значок атрибута.Этот тег используется для установки или получения значения типа Boolean, которое указывает, имеет ли элемент значок для конкретного приложения.Для этого необходимо также установить значение атрибута, идентифицируемое тегом kSecTypeItemAttr, для типа файла, для которого имеется соответствующая иконка в базе данных рабочего стола, и установить значение атрибута, идентифицированного тегом kSecCreatorItemAttr, равнымсоответствующий тип создателя приложения. Если в базе данных рабочего стола можно найти пользовательский значок, соответствующий типу и создателю элемента, он будет отображен в Keychain Access.В противном случае используются значки по умолчанию.

Возможно, попробуйте установить атрибуты kSecCreatorItemAttr и kSecTypeItemAttr.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...