0

私は、plist ファイルを Dropbox に複製して、2 台のコンピューター間でその plist ファイルを同期できるようにする小さなユーティリティに取り組んでいます。10.9 では、環境設定への変更はキャッシュされ、アプリケーションまたは cfprefsd によって要求された場合にのみディスクに書き込まれます。

CFPreferencesAppSynchronize を使用して、任意のアプリケーションの新しいプレゼンスをディスクに書き込むようにシステムに指示することはできますか? たとえば、ファインダーの設定を同期したい場合、小さなアプリケーションでファインダー (com.apple.finder) に関して CFPreferencesAppSynchronize を呼び出すことができますか? 以下のコードは機能していないように見えますが、エラーはスローされません。

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        // insert code here..
       NSString *stringApplicationID = @"com.apple.finder";
       CFStringRef applicationIDfinder = (__bridge CFStringRef)stringApplicationID;


       Boolean CFPreferencesSynchronize (
                                  CFStringRef applicationIDfinder,
                                  CFStringRef kCFPreferencesAnyUser,
                                  CFStringRef kCFPreferencesAnyHost
                                  );

    return 0;
}

}
4

1 に答える 1

1

この変更は 10.9 ではなく 10.8 で行われました (ただし、10.9 ではさらに変更されています)。ディスク上の plist を操作または対話するための信頼できる方法はありません。それらは純粋に設定システムの実装の詳細です。

それらを同期したい場合は、設定を読み取り、NSPropertyListSerialization を使用して自分でドロップボックスと同期された場所に書き込むことをお勧めします。次に、接続の反対側で、それらを自分で読み、CFPreferences に設定します。

于 2014-06-23T04:18:46.080 に答える