Objective c NSAlert提示以root身份运行的进程生成文本输入

Objective c NSAlert提示以root身份运行的进程生成文本输入,objective-c,swift,macos,root,nsalert,Objective C,Swift,Macos,Root,Nsalert,我有一个在后台以root用户身份运行的进程。当某个特定事件发生时,我让它弹出一个NSAlert,上面有一个NSTextField,这样用户就可以提供一些信息。但是,用户无法单击文本字段或在其中键入任何内容。我可以拖动警报框,然后点击警报上的按钮 我猜这是因为我的进程是以root用户身份运行的,而不是登录到机器上的最终用户帐户。有没有一种方法可以轻松解决这个问题,而不必作为用户生成一个单独的进程,并通过分布式对象或类似的方式传回信息?最好的办法是让您的UI作为当前用户运行,而不仅仅是因为这样的问题

我有一个在后台以root用户身份运行的进程。当某个特定事件发生时,我让它弹出一个NSAlert,上面有一个NSTextField,这样用户就可以提供一些信息。但是,用户无法单击文本字段或在其中键入任何内容。我可以拖动警报框,然后点击警报上的按钮


我猜这是因为我的进程是以root用户身份运行的,而不是登录到机器上的最终用户帐户。有没有一种方法可以轻松解决这个问题,而不必作为用户生成一个单独的进程,并通过分布式对象或类似的方式传回信息?

最好的办法是让您的UI作为当前用户运行,而不仅仅是因为这样的问题,但另一个原因是,以root用户身份运行GUI应用程序会带来大量的安全风险,事实上,过去也存在许多安全漏洞,这些漏洞是由以root用户身份运行的某些支持AppKit的进程造成的


话虽如此,XPC是您希望用来在根工具和GUI应用程序之间进行通信的机制,而不是分布式对象,这一机制已经过时,并且有许多问题。

“我猜这是因为我的进程是以根用户身份运行的,而不是登录到机器上的最终用户帐户。”!?对我来说,这听起来很奇怪。怎么会呢?我的进程以root用户身份运行。一旦机器打开,它就会启动。无论是否有人登录到机器,它都会运行。但是,当有人登录到机器时,有时我需要向最终用户请求输入。所以我正试图弹出一个NSAlert。