Search code examples
macossandbox

How does OS X's defaults command get access to prefs of sandboxed apps?


I am writing a preferences editor tool (see http://www.tempel.org/PrefsEditor). It is effectively a GUI version of the defaults command.

I have trouble reading (let alone writing) preferences of random sandboxed applications, though.

For instance, when I try to get the keys of the Maps app, I get NULL returned:

CFArrayRef prefs = CFPreferencesCopyKeyList (CFSTR("com.apple.Maps"), kCFPreferencesCurrentUser, kCFPreferencesAnyHost);

However, the defaults command is able to read those prefs:

defaults read com.apple.Maps

I like to know how the defaults command accomplishes this, trying to do the same in my tool.


Solution

  • try that:

    CFPropertyListRef prop = CFPreferencesCopyValue(CFSTR("ElementsVersion"),
    CFSTR("/Users/karsten/Library/Containers/com.apple.Maps/Data/Library/Preferences/com.apple.Maps"),
    CFSTR("kCFPreferencesCurrentUser"),
    CFSTR("kCFPreferencesAnyHost"));
    

    seems you need the path to the file, not just the bundle-id