Я пытаюсь включить и отключить требование пароля заставки из командной строки.
defaults read com.apple.screensaver
показывает переменную askForPassword, для которой установлено значение 0 или 1, в зависимости от того, настроил ли я требование пароля в Системных настройках или нет.
defaults write com.apple.screensaver askForPassword 1
и
defaults write com.apple.screensaver askForPassword 0
включить и отключить настройку пароля, или я так думал.
Вместо этого я обнаружил, что команды действительно устанавливают и снимают флажок в Системных настройках в разделе «Безопасность», но никак не влияют на заставку.
Если я включу пароль в Системных настройках, а затем отключу его с помощью второй команды записи по умолчанию, флажок в Системных настройках будет снят, но заставка все равно будет запрашивать пароль. Теперь только установка и снятие флажка в Системных настройках может изменить это поведение.
И если я отключу пароль в Системных настройках, а затем включу его с помощью первой команды записи по умолчанию, флажок в Системных настройках будет установлен, но скринсейвер не будет запрашивать пароль. Только снятие и установка флажка в Системных настройках впоследствии изменяет поведение.
В чем дело?
Я могу представить, что это глобальная настройка, и я должен изменить ее /Library/Preferences/com.apple.screensaver
вместо пользовательского домена. Но в таком случае, почему установлен флажок «Системные настройки»?
Если вы не обязаны использовать запись по умолчанию , вы можете использовать следующую команду. Он взаимодействует с ОС так же, как если бы вы использовали Системные настройки.
ПРОВЕРЕНО НА:
sudo osascript -e 'tell application "System Events" to set require password to wake of security preferences to false'
ПРИМЕЧАНИЕ. Если команда запускается внутри скрипта, которому предоставлены привилегии root, вам не понадобится sudo .
osascript -e 'tell application "System Events" to set require password to wake of security preferences to false'
Я столкнулся с похожей проблемой и нашел решение от пользователя Guillaume в этом сообщении на форуме . По сути, вам нужно заставить экранную заставку перечитать предпочтение требования пароля, что вы можете сделать с помощью программы C:
#include <CoreFoundation/CoreFoundation.h>
int main(int argc, char ** argv)
{
CFMessagePortRef port = CFMessagePortCreateRemote(NULL, CFSTR("com.apple.loginwindow.notify"));
CFMessagePortSendRequest(port, 500, 0, 0, 0, 0, 0);
CFRelease(port);
return 0;
}
И скомпилируйте это с помощью:
cc -o /tmp/anywhereyouwantit/notif notif.c -framework CoreFoundation
Затем вызовите эту программу сразу после вызоваdefaults write
макако
макако
Эндрю Дж. Брем
Эндрю Дж. Брем
макако
JS.