Macos 如何使用root从OSX守护程序或代理启动UI

Macos 如何使用root从OSX守护程序或代理启动UI,macos,daemon,agent,launchd,Macos,Daemon,Agent,Launchd,我正在寻找一种在用户登录或系统启动时启动程序的方法。程序需要具有root权限,并且需要在顶部菜单栏上显示一些UI内容 我尝试使用launchd作为守护进程和代理启动它。问题是守护进程不能有UI。代理作为用户运行,因此它没有root权限 我还尝试让一个守护进程使用setsid()调用一个脚本,让我的程序在不同的进程组中运行,但这也没有帮助。它只是不能显示任何UI内容 我是OSX新手,真的需要一些帮助 正如您正确识别的,守护进程无法显示UI。您需要的是一个单独的程序,它与守护进程通信以提供所需的UI

我正在寻找一种在用户登录或系统启动时启动程序的方法。程序需要具有root权限,并且需要在顶部菜单栏上显示一些UI内容

我尝试使用launchd作为守护进程和代理启动它。问题是守护进程不能有UI。代理作为用户运行,因此它没有root权限

我还尝试让一个守护进程使用setsid()调用一个脚本,让我的程序在不同的进程组中运行,但这也没有帮助。它只是不能显示任何UI内容


我是OSX新手,真的需要一些帮助

正如您正确识别的,守护进程无法显示UI。您需要的是一个单独的程序,它与守护进程通信以提供所需的UI

沟通的方法多种多样。如果设计合适,首选方法是使用,在这种情况下,您将创建主GUI应用程序,并使守护进程成为该应用程序的XPC服务

或者,GUI应用程序可以是一个启动代理,因此它在登录时启动,然后您需要提供两个进程之间的通信。有几种方法可以做到这一点,例如使用、或


无论您选择哪种方法,为了让守护进程提供UI,您必须使用单独的进程。

让守护进程执行特权操作,让代理执行GUI操作。然后让代理向守护进程查询它想要显示的数据。嗨,我正在处理根后台进程的相同问题,它无法触发crashreporter“意外终止”窗口。我需要处理所有导致意外终止并触发对话框的信号吗?@Zohar81,我建议为此启动一个不同的SO问题,因为它超出了这个问题的范围。我实际上写了一个关于它的问题,但措辞不同,因为我一开始还没有找出问题的根源,也许你可以看看下面的链接