我正在尋找一種在用戶登入之前在 Mac 和 PC 上運行 Reflector 或 AirServer 這樣的應用程式的方法,該應用程式幾乎沒有 GUI,直到有人開始向它發送數據,此時它會全螢幕顯示。
有沒有辦法在 Mac 和/或 PC 的登入畫面上執行應用程式?
答案1
在 OS X 中,您可以建立預先登入 launchd 代理程式。例如,將此屬性清單儲存為/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
其設為 just LoginWindow
,則程式根本不會運行。
請參閱守護程式和代理程式技術說明或man launchd.plist
了解更多。