applescript 无法解锁 macos 登录界面,仅能可靠锁屏;可通过调用 screensaverengine 或 pmset displaysleepnow 实现锁屏,而“自动解锁”实为关闭密码保护等系统级配置,并非脚本行为。
applescript 无法直接实现“解锁” macos 系统(即绕过登录界面输入密码),这是系统安全机制决定的——macos 不允许任何脚本或自动化工具在未认证状态下模拟用户登录。但你可以用 applescript 控制锁屏(即触发屏幕保护程序并要求密码),并在满足前提条件下配合系统设置实现“自动解锁”逻辑(本质是关闭密码保护,非脚本解锁)。
✅ 锁屏:可靠且推荐的方式
通过 AppleScript 启动屏幕保护程序,并确保其设置为“启动时需密码”,即可达到锁屏效果:
- 使用 tell application "ScreenSaverEngine" to activate 可立即唤起当前启用的屏保(如“浮动文字”“隧道”等)
- 更稳妥的做法是调用系统命令:do shell script "pmset displaysleepnow"(黑屏+触发锁屏)或 do shell script "open /System/Library/Frameworks/ScreenSaver.framework/Versions/A/Resources/ScreenSaverEngine.app"
- ⚠️ 前提:系统偏好设置 → 屏幕保护程序 → “开始前”设为“立即”,且勾选“进入屏幕保护程序后需要密码”
❌ 解锁:AppleScript 无权限,不可行
没有合法、稳定、无需第三方工具的 AppleScript 方法能输入密码并解除登录界面锁定。以下常见误区需注意:
- osascript -e 'tell app "System Events" to key code 36' 等按键模拟对登录窗口完全无效(GUI Scripting 在锁屏状态下被禁用)
- 试图用 do shell script "say 'unlock'" 或唤醒 Siri 也无法绕过认证环节
- macOS 的登录窗口运行在独立安全会话(loginwindow process),与用户会话隔离,脚本无访问权限
? 替代思路:“免密唤醒”需靠系统级配置
若目标是“合盖再开盖不输密码”,这不是脚本任务,而是调整系统策略:
- 系统设置 → 锁定屏幕 → 关闭“当显示器关闭时要求密码”(macOS Ventura 及更新版本路径)
- 终端执行:defaults write com.apple.screensaver askForPassword -int 0(禁用屏保后密码)
- 配合 pmset -g | grep "sleep\|displaysleep" 检查休眠策略,避免进入深度睡眠(此时必输密码)
- 注意:此举降低安全性,仅建议可信环境(如个人办公桌面)使用
? 实用组合示例:一键锁屏 + 提示
以下 AppleScript 可保存为应用或快捷指令,点击即锁屏并弹出提示:
display notification "屏幕已锁定" with title "? 已锁屏" do shell script "open -a ScreenSaverEngine" -- 或更兼容写法: -- do shell script "pmset displaysleepnow"
可绑定到快捷键(通过“快捷键”系统设置或第三方工具如 BetterTouchTool),实现单键锁屏。











