NSWorkspace launchApplication:第一次使用root用户失败

时间:2012-11-05 09:29:54

标签: objective-c macos

我正试图在我的Mac OS X 10.7.4 上从我的另一个应用程序(比如app1)启动我的一个应用程序(比如app2)。我使用以下代码:

[ [ NSWorkspace sharedWorkspace ] launchApplicationAtURL:[NSURL fileURLWithPath:appPath] options:NSWorkspaceLaunchDefault configuration:[NSDictionary dictionaryWithObject:[NSArray arrayWithObject: @"mode"] forKey:NSWorkspaceLaunchConfigurationArguments] error:&err];

除了第一次工作正常之外,即如果我们有一台新机器,那么第一次尝试从app1启动app2时,第一次尝试以root用户身份登录时失败但随后工作正常。

以下是我在转储NSError时遇到的错误:

  

2012-11-05 07:47:48 +0000:无法启动应用程序“App2”,因为发生了其他错误(OSStatus -10810)。

另外,我在控制台的所有消息中收到以下消息:

  

11/4/12 11:47:48.329 PM com.apple.launchd [1]:系统:错误:12B19:launchd + 79534 [AEF41441-17BC-36E6-B1F8-57BADBDFEBCF]:0x0

     

11/4/12 11:47:48.329 PM com.apple.launchd [1]:系统:此API只能由在Aqua会话中运行的进程使用。

     

11/4/12 11:47:48.329 PM App1 [2405]:spawn_via_launchd()失败,错误= 5标签= [0x0-0x57057] .com.ak.app1 path = / var / root / Library / Caches /com.ak.app2/app2.app/Contents/MacOS/app2 flags = 0

奇怪的是,只有root用户第一次尝试才会失败。

1 个答案:

答案 0 :(得分:1)

您似乎正在尝试从非UI进程启动应用程序。这不再受支持,因为它在内部使用LSOpenApplication,自Lion以来不支持非UI进程。有关详细信息,请参阅此discussion