有人有办法在 Mac 解锁面板上添加联系信息吗?比如:
如有发现,请联系我的名字(555)555-555 或[电子邮件保护]
因此,如果我放错了笔记本电脑的地方,打开时就会显示该信息。
我也在底部贴了一张名片,但这只是额外的措施。
赏金用于确定如何编辑解锁 .nib 文件以添加联系信息
答案1
在 Mac OS X 10.6 Snow Leopard 中编辑解锁窗口的文本
解锁窗口的默认文本“要访问这台计算机,您需要输入密码。”包含在 loginwindow.app 中的一个 .nib 文件中,并且可以进行某些限制的修改。
首先,cd
到正确的目录:
cd /System/Library/CoreServices/loginwindow.app/\
Contents/Resources/English.lproj/BuiltInAuth.nib
我们要编辑的 .nib 是keyedobjects.nib
。有两种方法可以编辑该文件。
使用纯文本编辑器编辑 .nib 文件
首先我们必须将二进制编码的 .nib 文件转换为 XML:
sudo plutil -convert xml1 keyedobjects.nib
现在使用任何纯文本编辑器编辑 keyedobjects.nib;我使用了 vi。请记住在编辑时要具有 root 权限,可以通过 sudo 或其他方式:
sudo vi keyedobjects.nib
不幸的是,没有很好的方法可以明确地直接转到正确的条目。我们对第 40 项感兴趣,但对象只是按顺序输入的,没有索引。幸运的是,我们要找的恰好是字符串“password”的第一次出现。因此只需搜索“password”。您会在<string>
标签内找到当前文本。
实际上,如果您想成为一名 vi 极客,您可以输入以下 vi 命令序列:
1G41/^\t\t<[^/]
(除了结尾处,不要在任何地方按回车键。)
它会转到文档顶部,然后搜索第 41 个出现的行,该行以两个制表符和一个左尖括号开头,且后面没有斜杠。这只在plutil
以特定方式格式化 xml 时才有效。我们搜索的是第 41 个而不是第 40 个,因为它是一个从零开始的数组。
使用 Xcode 编辑 .nib 文件
您也可以直接使用 Xcode 编辑 .nib 文件,但是,在我看来,在这种情况下这样做并不是那么容易,而且更难以 root 权限运行,尽管如果您害怕 vi,这也是可行的:
sudo /Developer/Applications/Xcode.app/Contents/MacOS/Xcode \
/System/Library/CoreServices/loginwindow.app/Contents/Resources/\
English.lproj/BuiltInAuth.nib/keyedobjects.nib
如上所述,我们对项目 40 感兴趣,并且 Xcode 确实向您显示了项目索引,因此您可以直接向下滚动到项目 40 即可找到它。
但是,Xcode 确实要求 .nib 为 binary1 格式,以便它将其解释为 .nib 并为您提供漂亮的界面,因此如果您想以这种方式执行此操作,请省略所有“ plutil -convert
”指令。
无需获得 root 权限即可编辑文件
嗯,您仍然需要拥有 root 权限,但是您可以更改文件的权限,而不需要向您的编辑器授予 root 权限,如果您发现这样更容易处理的话。
从命令行更改(然后改回)文件权限:
chmod o+w keyedobjects.nib
chmod o-w keyedobjects.nib
或者使用 Finder 的“获取信息”窗格更改它们。不过,您必须右键单击 loginwindow 和 BuiltInAuth.nib 并选择“显示内容”才能通过 Finder 访问该文件。
然后您可以使用编辑器、Xcode、vi 或其他任何编辑器,而无需具有 root 权限。
更改文本
改变文本本身是显而易见的。只需更改它即可。
解锁窗口显示的文本数量似乎有限制——它不会超过默认显示的两行,但你能填写第二行 — — 所以要简洁。
此外,如果文本字符串太长,似乎会完全破坏解锁;它根本不会显示解锁窗口。例如,447 个字符的字符串就对我造成了这种情况。但我不知道破坏从哪里开始。
如果你想在某个特定位置开始新行,则不需要转义代码或任何其他内容;只需直接在那里输入换行符即可:
<string>line1
line2</string>
事实胜于雄辩,或者诸如此类:
更改字体(可选)
您甚至可以将字体和点大小从默认的 13pt LucidaGrande-Bold 更改为其他大小。将项目 42(对于文本编辑器,搜索“LucidaGrande-Bold”)更改为您想要的任何字体。(Font Book 应用程序将显示可用的字体;格式似乎是 TypeFace-Weight,并删除了空格。)点大小包含在项目 41 中字体声明之前的 NSSize 键中。
以下是 8pt Futura-CondensedMedium 的一个示例:
这张图片似乎暗示高度限制实际上不是两行,而是一个特定的像素高度。(看起来大约是 34 像素。)因此,理论上,如果您能找到高度和行距较小的字体,您可能能够容纳更多完整的行。(.nib 文件中甚至可能有一个键可以更改显示区域高度。不过,我还没有查看。)
最后的想法
就是这样,您已经完成了。这不是必需的,但是如果您将其转换为 xml 并且您确实需要,您可以将 .nib 转换回二进制形式:
sudo plutil -convert binary1 keyedobject.nib
您必须注销并重新登录才能使其生效。
codesign
确认
但此编辑确实影响了协同设计验证:
% codesign -vvvv /System/Library/CoreServices/loginwindow.app
/[...]/loginwindow.app: a sealed resource is missing or invalid
/[...]/loginwindow.app/[...]/keyedobjects.nib: resource modified
我不知道这最终会产生什么影响,但我会将 Arjan 的链接复制到应用程序验证失败可能造成的影响。
答案2
对于 10.6,更改解锁面板的唯一方法似乎是通过更改笔尖,就像描述的一样在 wfaulk 的回答中。
因此,此答案仅适用于 10.5 的用户,或想要更改登录窗口(而不是解锁面板)上的消息的用户。登录窗口也用于快速用户切换,但不是用于受密码保护的屏幕保护程序。
对于 10.5 来说,这实际上非常简单。 如何在登录窗口添加短信(从睡眠唤醒后)macosxhints.com 上解释道:
您可以通过编辑位于 /System/Library/CoreServices/loginwindow.app/Contents/Resources/English.lproj 的文件“loginwindow.strings”来编辑该对话框的
最后一句 [first, AvB]。您需要按住 Control 键并单击 loginwindow.app 以“显示包内容”(“.app”通常是隐藏的)。要编辑的区域如下所示:
/********** 屏幕锁定密码 **********/ /* 解锁屏幕锁定模式对话框的消息 */ /* 它不应该提及有关身份验证方法的任何信息 */ /* 如输入密码。有关方法的说明 */ /* 用于身份验证的字段将由 SecurityAgent 附加 */ "输入您的密码来解锁屏幕。"="您必须[..]屏幕。";蓝色文本 [“您必须进行身份验证才能解锁屏幕。”,AvB] 是您想要更改的内容。请注意仅使用 loginwindow 应用程序的副本,以便在犯错时轻松恢复。
确实,这在 10.5.8 上运行良好。(确保保存为大端 UTF-16。进行更改后需要注销,并且 OS X 将始终添加文本“Mac OS X 要求您输入密码”或任何适用的行。)
在 10.6 中情况就不一样了。
该字符串仍然存在,但没有使用,因为对话框现在只显示“要访问这台计算机,您需要输入密码。”大胆地添加一行,如下所示不是工作:
“要访问这台计算机,您需要输入密码。”“打电话给我!道格。”;
使用strings
或hexdump -C
,可以在 /System/Library/CoreServices/loginwindow.app/Contents/Resources/English.lproj/BuiltInAuth.nib/ 内的 (已编译) nib 中找到文本。使用上述行keyedobjects.nib
创建一个全新的文件BuiltInAuth.strings
没有帮助。对于其他本地化,已编译的 nib 也不同:
cd /System/Library/CoreServices/loginwindow.app/Contents/Resources/ grep -iR \ “您最好小心谨慎,不要让这台电脑损坏。” * 二进制文件 Dutch.lproj/BuiltInAuth.nib/keyedobjects.nib 匹配
如上所述:参见wfaulk 的回答更改笔尖中的文本。
对于 10.6,可以更改图像Security.icns
在同一个 Resources 文件夹中。(在 10.6.1 中测试。同样,进行更改后需要注销。)不幸的是,图标被缩放以适应其原始位置,这留下了一个非常小的发挥空间:
然而,这打破了代码签名, 哪个可能影响防火墙设置, 和或许还有软件更新。我不知道这是否真的是个问题;请参阅如果 Mac 代码签名被篡改,可能会出现什么问题?
codesign -vvv /System/Library/CoreServices/loginwindow.app /[..]/loginwindow.app:密封资源丢失或无效 /[..]/Contents/Resources/Security.icns:资源已修改
当一个人习惯手动锁定屏幕时,在 10.6 中,一种解决方法可能是使用快速用户切换对于 10.5 和 10.6,都可以轻松地将文本添加到登录窗口(与解锁面板不同):
sudo defaults write /Library/Preferences/com.apple.loginwindow \
LoginwindowText -string \
'If found, please contact My Name at (555) 555-555 or [email protected]'
在 10.6 中,快速用户切换可以轻松实现已添加到服务菜单并分配键盘快捷键。不过,这将仅有的手动锁定计算机时工作。
答案3
最好将这些信息放在机器上(用胶带将卡片粘在底部或类似的东西上)。解锁屏幕可能对找到它的人不可见,这取决于笔记本电脑的最后状态。如果电池没电了,他们将无法在屏幕上看到任何内容。即使他们插入电源,也可能只会启动到登录屏幕(取决于它是否成功休眠,这种情况并不总是发生)。
如果使用软件,则必须将信息放在多个位置。使用“硬件”解决方案会更可靠。
答案4
是的,这绝对可行(如果我们想到的是同一件事的话)。
您可以使用Visage登录定制登录屏幕的许多不同方面,包括显示的文本。