2012-02-26 133 views
0

我在系統首選項(使用授權鎖)中使用了預發送。我需要將我的偏好寫入/Library/Preferences。但是,每當我嘗試將首選項同步到kCFPreferencesAnyUserkCFPreferencesCurrentHost時,即使我的鎖已解鎖,它也會失敗。有沒有辦法在不創建幫助程序的情況下將我的偏好設置寫入/Library/Preferences?我想避免這種情況,因爲它是多餘的。CF首選項/庫/首選項

注意修改「任何用戶」首選項需要root權限(或管理員權限之前的Mac OS X v10.6中) - 見Authorization Services Programming Guide.

我讀的授權服務編程指南,它確實甚至沒有提到偏好。

回答

1

CFPreferences使用您的進程的euid來確定「當前用戶」的含義。您可以將您的euid設置爲0,但這並不推薦,因爲這意味着您的整個程序現在是特權升級攻擊的可能來源,前提是它包含漏洞,而不僅僅是特定於目的的輔助程序。這對你的用戶不利,並且延長對你不利。

另外,XPC和seteuid()並不總是很好玩,CFPreferences使用XPC。我相信,從euid 0切換到非0應該工作,但我不會指望其他方向正常工作。