ログインウィンドウでアプリケーションを実行する

ログインウィンドウでアプリケーションを実行する

私は、ユーザーがログインする前に、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 コマンドが 1 回実行され、ユーザーがグラフィカルにログインした後に再度実行される必要があります。

ユーザーがグラフィカルにログインしたときにプログラムを再度実行したくない場合は、 を削除します<string>Aqua</string>

自動ログインが有効になっていて、LimitLoadToSessionTypeが のみに設定されている場合LoginWindow、プログラムはまったく実行されません。

を参照してくださいデーモンとエージェントの技術ノートまたはman launchd.plist詳細についてはこちらをご覧ください。

関連情報