Mac 解锁面板上的联系信息

Mac 解锁面板上的联系信息

有人有办法在 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 中情况就不一样了。

该字符串仍然存在,但没有使用,因为对话框现在只显示“要访问这台计算机,您需要输入密码。”大胆地添加一行,如下所示不是工作:

“要访问这台计算机,您需要输入密码。”“打电话给我!道格。”;

使用stringshexdump -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登录定制登录屏幕的许多不同方面,包括显示的文本。

相关内容