2012-02-26 7 views
0

私はシステム設定(許可ロック付き)で使用されるプリファを持っています。私は/Library/Preferencesに書くために私の好みを得る必要があります。しかし、いつでも私はロックを解除しても、kCFPreferencesAnyUserkCFPreferencesCurrentHostにプリファレンスを同期しようとすると失敗します。ヘルパーアプリケーションを作成せずに自分の設定を/Library/Preferencesに書き込む方法はありますか?私はそれが冗長なので、それを避けたいです。 「任意のユーザ」設定を変更する/Library/PreferencesへのCFPの参照

注意は、私が認可サービスプログラミングガイドを読み、それがなかった-see Authorization Services Programming Guide.

する(Mac OS X 10.6より前または管理者権限)、root権限が必要です嗜好は言及していません。

答えて

1

CFPreferencesはプロセスのeuidを使用して、「現在のユーザー」の意味を判断します。おそらくあなたのeuidを0に設定することはできますが、それはあなたの全体のプログラムが、わずかな目的別ヘルパーではなく、脆弱性を含んでいれば、権限エスカレーション攻撃の可能なソースになりました。それはあなたのユーザーにとっては悪いことであり、拡張ではあなたにとって悪いことです。

また、XPCとseteuid()は常に良いとは限りません。また、CFPreferencesはXPCを使用します。 euid 0からnon-0への切り替えはうまくいくはずですが、私は信じていますが、私は他の方向の作業には数えません。