必须启用自动登录并配置单应用启动环境,否则Kiosk模式会在登录界面中断;再通过浏览器命令行、Electron真全屏或系统级限制禁用快捷键、Dock、菜单栏等逃逸路径,最终实现开机即入指定应用的纯信息亭模式。

要在Mac上将整个操作系统锁定为信息亭Kiosk模式,专用于展览会或展厅宣传场景,必须绕过系统默认的“仅锁定屏幕”逻辑,实现开机即进指定应用、禁用Dock/菜单栏/快捷键/多任务、阻止退出和系统访问——这不是靠快捷键或屏幕保护程序能完成的事。
核心前提:启用自动登录 + 单应用启动环境
这一步不做,后续所有Kiosk设置都会在登录界面断掉。必须让Mac开机后不出现登录窗口,直接以指定用户身份进入桌面,并立即拉起目标应用。
第一步:前往“系统设置 > 用户与群组”,点击左下角锁图标输入管理员密码解锁 → 点击“登录选项” → 开启“自动登录”,并选择你要锁定运行的应用所在账户。
第二步:在“用户与群组”中选中该用户 → 点击右下角“登录项” → 点击“+”号添加你的宣传应用(如Chrome、Safari、Electron定制应用或全屏展示App)→ 拖拽到列表顶部,确保它优先启动。
【关键陷阱】若该应用未通过“访达 > 右键 > 显示简介 > 勾选‘在登录时打开’”,或未设为默认启动项,系统会先进入完整桌面环境,用户仍有1~3秒窗口可触发Command+Tab、Control+Up等快捷键逃逸。
方法一:用Safari或Chrome浏览器跑网页型宣传页(零开发成本)
适合已有H5宣传页、无需本地安装App的轻量部署场景,稳定性高,重启后自动恢复。
方法一:Chrome命令行强制Kiosk启动
在终端执行:open -a "Google Chrome" --args --kiosk --no-first-run --disable-features=TranslateUI https://your-exhibition-page.com
将上述命令保存为.applescript文件(如kiosk-launch.scpt),再用Automator打包成App,最后拖入“登录项”。注意:必须关闭Chrome所有实例后再运行,否则--kiosk参数无效。
方法二:Safari无法原生支持--kiosk,但可配合系统级限制补位——开启“系统设置 > 辅助功能 > 键盘 > 快捷键”,禁用全部系统级快捷键(特别是Command+Tab、Command+Space、Control+Up)。
方法二:Electron应用启用真Kiosk模式(推荐长期展陈)
如果你的宣传内容封装在Electron中(比如用Vue/React做的交互式展厅页面),这是最可控的方案,能彻底屏蔽系统行为。
在主进程代码中加入:
win.setFullScreen(true);
win.setKiosk(true);
win.on('enter-full-screen', () => { win.setIgnoreMouseEvents(true, { forward: false }); });
⚠️ 注意:macOS Catalina及以后版本要求该App必须开启“完全磁盘访问”权限(在“系统设置 > 隐私与安全性 > 完全磁盘访问”中手动勾选),否则setKiosk()调用会静默失败。
打包后,将生成的.app拖入“登录项”,并确保在“系统设置 > 通用 > 允许从以下位置下载的应用”中设为“任何来源”(需先右键打开一次绕过Gatekeeper)。
终极加固:禁用所有系统逃逸路径
第一步:禁用触控ID唤醒 Dock 和菜单栏 → “系统设置 > 触控ID与密码 > 启用‘锁定屏幕时使用触控ID’”,但取消勾选“在菜单栏中显示触控ID”。
第二步:彻底隐藏Dock → 终端执行:defaults write com.apple.dock autohide -bool true && killall Dock;再执行:defaults write com.apple.dock autohide-delay -float 9999999999,让Dock永不自动浮现。
第三步:关闭所有通知中心入口 → “系统设置 > 通知 > 通知中心”,关闭“允许通知中心”和“在菜单栏中显示”。
第四步:移除所有非必要用户账户 → “系统设置 > 用户与群组”,只保留一个标准账户(勿用管理员账户直接运行Kiosk应用),其余全部删除。防止他人在登录界面切换账户绕过限制。
第五步:物理防护 → 使用USB-C转HDMI加密狗或专用机壳,拔掉键盘上的Command键帽(或用胶带封住),避免现场观众误触组合键。


















