In OS X können Sie einen Launchd-Agenten vor der Anmeldung erstellen. Speichern Sie diese Eigenschaftsliste beispielsweise als /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>
Stellen Sie sicher, dass die Plist root gehört. Ist dies nicht der Fall, kann es geladen werden, wenn Sie launchd load
als Benutzer ausgeführt werden, es wird jedoch nicht automatisch von launchd geladen.
Wenn Sie anschließend neu starten, sollte der Befehl say einmal ausgeführt werden, wenn das Anmeldefenster angezeigt wird, und erneut, nachdem sich ein Benutzer grafisch angemeldet hat.
Wenn Sie nicht möchten, dass das Programm erneut ausgeführt wird, wenn sich ein Benutzer grafisch anmeldet, entfernen Sie <string>Aqua</string>
.
Wenn die automatische Anmeldung aktiviert ist und LimitLoadToSessionType
nur festgelegt ist LoginWindow
, wird das Programm überhaupt nicht ausgeführt.
Siehe die Daemons und Agenten Tech - Note oder man launchd.plist
für weitere Informationen.