在OS X 10.7上以root身份执行时找不到正在运行的应用程序

时间:2013-05-17 00:02:01

标签: cocoa osx-lion

我有一个以root身份运行的特权帮助工具(由SMJobBless祝福),我试图获取Finder的进程ID。下面的代码在OS X 10.8中工作正常,但在10.7上为finderApps返回一个空数组。

我通过选择" root"在两台运行10.7的不同机器上重现了这个问题。对于"调试过程为"在XCode上的Schemes下的选项。奇怪的是,如果我使用" sudo myTestApp"直接调用它,代码就可以正常工作。

为什么我无法在直接作为守护进程启动或在XCode下以root身份进行调试时运行代码?

int main(int argc, const char * argv[])
    {

    NSArray *finderApps = [NSRunningApplication runningApplicationsWithBundleIdentifier:@"com.apple.finder"];

    if ([finderApps count] == 0)
    {
        NSLog(@"failed to find Finder");

        return -1;
    }

    NSRunningApplication *finderApplication = [finderApps objectAtIndex:0];
    pid_t process_id = [finderApplication processIdentifier];

    NSLog(@"succeeded with procid: %d", process_id);

    return 0;
}

0 个答案:

没有答案