我們開發了一個類似於防病毒的應用程序,它具有後臺進程以及用於與用戶交互的GUI(注意:後臺進程將作爲單獨的GUI執行線)。在Mac上使用LaunchAgent運行代理
我們的應用程序在部署時在MacOS以下是要求:
應該使用LaunchAgent爲每個登錄用戶推出的應用程序的GUI部分,即使這些用戶,他們的帳戶創建之後安裝該軟件。
用戶無需管理員權限應該無法通過任何手段阻止GUI程序(例如,launchctl卸載/ bootout或活動監視器)
我們所做到目前爲止
我們在/Library/LaunchAgents
中創建了一個plist
文件,並使用launchctl load -F com.myfile.plist
加載該文件,該文件成功加載,並且由於範圍設置爲Aqua,因此用戶在代理程序中的任何時間都可以開始。
問題,我們都面臨着
- 非管理員用戶可以使用
launchctl
注意登錄後停止加載代理
- 據我們瞭解,我們可以將我們的應用程序放入每個用戶的「登錄項目」中。我們不喜歡這種解決方案,因爲我們必須爲每個用戶執行此任務,並且如果在安裝後創建了新用戶,他/她將不會自動在其登錄項中擁有我們的應用程序。此外,用戶似乎可以訪問並能夠從其登錄項列表中刪除應用程序。
- 該應用程序有一個GUI,因此我們無法啓動它作爲一個無頭守護進程。這是一個JavaFX應用程序,它使用許多Swing調用,因此它必須有權訪問Aqua會話。
關於如何滿足部署要求的任何想法?