В OS X есть предпочтение запрашивать пароль при пробуждении из режима сна или хранителя экрана, хранящегося в домене настроек com.apple.screensaver , ключ askForPassword . Я бы хотел изменить это предпочтение у демона, работающего от имени пользователя root, но я не уверен, что это правильно.
Одним из вариантов является чтение, обновление и синхронизация через [NSUserDefaults persistentDomainForName:]. Это успешно обновляет предпочтение, однако loginwindow не сразу перезагружает это предпочтение. С помощью этого кода можно подать сигнал loginwindow для перезагрузки предпочтения из приложения, работающего в пространстве имен начальной загрузки пользователя:
CFMessagePortRef port = CFMessagePortCreateRemote(kCFAllocatorDefault, CFSTR("com.apple.loginwindow.notify"));
CFMessagePortSendRequest(port, 500, NULL, 0, 0, NULL, NULL);
CFRelease(port);
но порт loginwindow недоступен из пространства имен начальной загрузки демона.
Есть ли лучший способ обновить это предпочтение? Или простой способ сообщить о любом окне входа в систему от демона?