ใน 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>
ตรวจสอบให้แน่ใจว่าเจ้าของเพลทเป็นเจ้าของโดยรูท หากไม่เป็นเช่นนั้นจะสามารถโหลดได้หากคุณเรียกใช้launchd load
ในฐานะผู้ใช้ แต่จะไม่ถูกโหลดโดย launchd โดยอัตโนมัติ
จากนั้นหากคุณรีสตาร์ทคำสั่ง say ควรจะรันหนึ่งครั้งเมื่อหน้าต่างการเข้าสู่ระบบปรากฏขึ้นและอีกครั้งหลังจากผู้ใช้บันทึกเป็นภาพกราฟิก
<string>Aqua</string>
หากคุณไม่ต้องการโปรแกรมที่จะทำงานอีกครั้งเมื่อผู้ใช้เข้าสู่ระบบกราฟิกลบ
หากเปิดใช้งานการเข้าสู่ระบบอัตโนมัติและLimitLoadToSessionType
ตั้งค่าเป็นเพียงLoginWindow
โปรแกรมจะไม่ทำงานเลย
ดูบันทึกเทคโนโลยีของ Daemons และ Agentหรือman launchd.plist
สำหรับข้อมูลเพิ่มเติม