2011-03-26 60 views
0

我正在使用SecKeychainFindGenericPassword()來獲取我以前用SecKeychainAddGenericPassword()保存的應用程序密碼。正如所料,MacOS爲用戶提供了一個對話,要求他們批准鑰匙串訪問。然而,疊加在掛鎖右下角的圖標是一個通用的文檔圖標,而不是我的應用程序的圖標。如何指定要在鑰匙串授權對話框中使用的圖標

我無法看到關於指定圖標的鑰匙串服務引用中的任何內容,所以我會假定操作系統只是使用您的應用程序圖標。我的「圖標」文件(在info.plist中引用)具有根據Iconographer填充的所有可能的大小和位圖,因此我不確定接下來要看的位置。

希望有一個明顯的問題,有人可以指向我?

回答

1

這通常是因爲您的應用程序正在從其他用戶無法讀取的目錄運行。驗證對話框顯然運行在另一個進程中,它需要能夠從捆綁中獲取圖標。

+0

不是這樣,但它足夠了暗示讓我去那裏。鑰匙串對話框會忽略Info.plist中的內容,並在應用程序資源文件夾中讀取名爲Icons.icns的文件。在我的情況下,該文件名爲icons.icns(與plist匹配),該應用程序位於區分大小寫的捲上!解決方案是重命名文件並將plist更改爲圖標。icns – 2011-03-30 07:33:47

+0

其實 - 從頭開始​​。我無法使其在大小寫敏感的音量上工作。哦,這只是一個非常小的顯示問題,只有很小一部分用戶和另一個rdar ... – 2011-03-30 07:38:44

0

此前的kSecCustomIconItemAttr棄用,在Keychain Services Reference (2003)是這樣說的:

kSecCustomIconItemAttr

標識自定義圖標的屬性。 您可以使用此標籤來設置或獲得的Boolean類型的值,該值指示 該項目是否具有應用程序特定的 圖標。要做到這一點,還必須設置 由 標籤kSecTypeItemAttr識別到的文件類型 針對其存在的桌面數據庫中的相應 圖標的屬性值,並設定 由 標籤kSecCreatorItemAttr確定的屬性值一個 適當的應用程序創建者類型。 如果在桌面數據庫中可以找到與 項目的類型和創建者對應的自定義圖標 ,則將由Keychain Access顯示 。 否則,使用默認圖標。

也許嘗試設置kSecCreatorItemAttrkSecTypeItemAttr屬性。

+0

我讀這是爲了設置安全實體的自定義圖標,顯示在鑰匙串訪問中(它不在OSX中)而不是應用程序本身。當然,創作者類型是非常不贊成的。無論如何,如果沒有其他想法,我會放棄它(如果它有效,那麼它將不得不在挖掘一個被遺棄的Apple站點上的創建者代碼註冊頁面!) – 2011-03-30 07:30:03

1

這是一個訪問權限問題,正如Chris Suter先前提到的那樣。 plist中圖標的名稱與應用程序包中指向的文件無關InfoPlist將在海拔過程中使用(CFBundleIconFile)(如果沒有指定自定義的一個到電梯) 在Lion或更高版本上嘗試操作系統,你會發現你在家中複製的任何應用程序都受到保護(根本無法訪問),因此電梯無法讀取圖標。

相關問題