CFPreferences использует euid вашего процесса, чтобы определить, что означает «текущий пользователь». Возможно, вы могли бы установить свой euid в 0, но это действительно не рекомендуется, потому что это означает, что ваша вся программа теперь является возможным источником атак на повышение привилегий, если она содержит уязвимость, а не просто крошечным специализированным помощником , Это плохо для ваших пользователей и, соответственно, плохо для вас.
Кроме того, XPC и seteuid () не всегда хорошо играют, а CFPreferences использует XPC. Я полагаю, что переключение с euid 0 на non-0 должно сработать, но я бы не рассчитывал на другое направление работы.