我正在尝试从命令行启用和禁用屏幕保护程序密码要求。
defaults read com.apple.screensaver
显示的变量AskForPassword设置为0或1,具体取决于我是否在系统偏好设置中配置了密码要求。
defaults write com.apple.screensaver askForPassword 1
和
defaults write com.apple.screensaver askForPassword 0
启用和禁用密码设置,或者我想。
相反,我发现这些命令确实选中并取消选中“安全性”下“系统偏好设置”中的复选框,但根本不影响屏幕保护程序。
如果我在“系统偏好设置”中启用了密码,然后使用第二个默认的write命令将其禁用,则“系统偏好设置”中的复选框未选中,但是屏幕保护程序仍会要求输入密码。现在仅选中和取消选中“系统偏好设置”中的复选框即可更改此行为。
而且,如果我在“系统偏好设置”中禁用了密码,然后使用第一个默认写入命令启用了该密码,则会选中“系统偏好设置”中的复选框,但屏幕保护程序不会要求输入密码。只有取消选中并选中“系统偏好设置”中的复选框后,行为才会更改。
这是怎么回事?
我可以想象这是一个全局设置,应该修改/Library/Preferences/com.apple.screensaver
而不是用户域。但是在那种情况下,为什么对“系统偏好设置”复选框有影响?
这有点令人困惑。在切换“询问密码”设置时,我已经看过文件读/写。我可以看到的唯一被修改的文件是com.apple.screensaver。我猜想在GUI中切换此按钮以及写入plist文件时,消息会发送到某些服务。我敢打赌,重启系统或注销/登录可能会导致文件被所述服务重新读取,从而进行所需的更改。
—
Macaco 2012年
我是正确的!更改plist文件后注销然后重新登录,将反映设置的更改。因此,看起来您需要查找哪个服务正在控制“询问密码”行为,并在修改plist之后重置/重新加载它。
—
Macaco 2012年
看起来苹果公司正在破坏自己的plist机制。
—
Andrew J. Brehm
助教。我希望有人会知道并在这里回答。
—
Andrew J. Brehm
由“系统偏好设置”编写该文件后,似乎是“ loginwindow”过程正在访问该文件。有道理。不幸的是,杀死loginwindow进程将强制您注销。继续挖!
—
Macaco 2012年