必须先确认是否存在loginhook/logouthook,再执行sudo defaults delete命令清除注册项,接着删除/library/scripts/下的sound-off.sh等脚本文件,并排查~/library/launchagents/和/library/launchdaemons/中相关.plist文件,最后重启验证音量图标响应及defaults读取结果为空。

Mac电脑已通过LoginHook/LogoutHook脚本实现开机静音,但你现在想彻底移除这套自动静音机制,避免它干扰后续音效调试、会议演示或外接音响测试——这类脚本一旦部署,会持续在每次登录/登出时强制执行,不手动清理就会一直生效。
确认当前是否设置了LoginHook或LogoutHook
打开“终端”,输入以下命令并回车:
defaults read com.apple.loginwindow LoginHook 2>/dev/null && echo "存在LoginHook" || echo "无LoginHook"
再输入:
defaults read com.apple.loginwindow LogoutHook 2>/dev/null && echo "存在LogoutHook" || echo "无LogoutHook"
如果任一命令返回路径(如 /Library/Scripts/sound-off.sh),说明脚本仍在注册状态,必须清除。
删除LoginHook和LogoutHook注册项
在终端中依次执行以下两条命令:
sudo defaults delete com.apple.loginwindow LoginHook
sudo defaults delete com.apple.loginwindow LogoutHook
【若提示“Does Not Exist”可忽略,表示该项原本就未设置】
删除静音脚本文件本身
第一步:进入脚本所在目录
cd /Library/Scripts
第二步:查看是否存在sound-off.sh或sound-on.sh
ls -l sound-*.sh 2>/dev/null
第三步:如果列表中有文件,执行删除(以sound-off.sh为例):
sudo rm -f sound-off.sh sound-on.sh
这一步必须做,否则即使Hook被删,残留脚本仍可能被其他流程意外调用。
检查并清理可能的LaunchAgent配置(补充排查)
方法一:检查用户级启动代理
ls ~/Library/LaunchAgents/ | grep -i "mute\|sound\|volume"
方法二:检查系统级启动守护进程
ls /Library/LaunchDaemons/ | grep -i "mute\|sound"
只要发现匹配文件名,就用sudo rm -f 删除对应.plist文件,然后运行 launchctl unload -w [路径](若该服务当前已加载)。
验证是否彻底清除
重启Mac后,执行:
defaults read com.apple.loginwindow | grep -E "(LoginHook|LogoutHook)"
输出应为空;同时确认右上角音量图标能正常响应调节,且开机时不再自动跳至静音状态。











