在登录窗口中运行应用程序

在登录窗口中运行应用程序

我正在寻找一种方法,在用户登录之前在 Mac 和 PC 上运行像 Reflector 或 AirServer 这样的应用程序,该应用程序几乎没有 GUI,直到有人开始向其发送数据,此时它会全屏显示。

有没有办法在 Mac 和/或 PC 的登录屏幕上运行应用程序?

答案1

在 OS X 中,您可以创建一个登录前启动的代理。例如,将此属性列表保存为/Library/LaunchAgents/some.label.plist

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>Label</key>
  <string>some.label</string>
  <key>LimitLoadToSessionType</key>
  <array>
    <string>LoginWindow</string>
    <string>Aqua</string>
  </array>
  <key>ProgramArguments</key>
  <array>
    <string>say</string>
    <string>a</string>
  </array>
  <key>RunAtLoad</key>
  <true/>
</dict>
</plist>

确保 plist 归 root 所有。如果不是,则以launchd load用户身份运行时可以加载它,但 launchd 不会自动加载它。

然后,如果您重新启动,则 say 命令应该在显示登录窗口时运行一次,并在用户以图形方式登录后再次运行。

如果您不希望在用户以图形方式登录时再次运行该程序,请删除<string>Aqua</string>

如果启用了自动登录并将LimitLoadToSessionType其设置为LoginWindow,则程序根本不会运行。

查看守护进程和代理技术说明man launchd.plist了解更多信息。

相关内容