gpt4 book ai didi

cocoa - LSCopyApplicationURLsForURL 不适用于 root

转载 作者:行者123 更新时间:2023-12-03 16:21:40 24 4
gpt4 key购买 nike

当我以 root 身份运行带有调试可执行文件的 xcode 时,LSCopyApplicationURLsForURL 不会返回所有应用程序。如果使用管理员运行,它将返回所有已安装的应用程序。

为什么这种奇怪的行为有什么想法。

问候,阿克巴

最佳答案

Mac OS X 系统上的每个用户都有自己的启动服务数据库缓存文件。一个用户当前“安装”(或已知)的应用程序的确切集合可能不一定与另一个用户(包括根用户)的已知应用程序集匹配。您可能需要像下面的代码那样包装 LS 命令:

int err = 0;
uid_t uid = getuid();
uid_t euid = geteuid();

if (uid != euid) {
err = seteuid(uid);
if (err != 0) {
NSLog(@"seteuid(uid) returned %d", err);
}
}

// do your LS commands, etc.

// then restore root privs:
err = seteuid(euid);
if (err != 0) {
NSLog(@"seteuid(euid) returned %d", err);
}

(请注意,我在这里假设您没有以 root 用户身份登录 GUI,在这种情况下,上述方法将不起作用,因为 uid 和 euid 是相同的)。

关于cocoa - LSCopyApplicationURLsForURL 不适用于 root,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6649138/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com