cocoa 获取已安装应用程序的列表

2023-11-24

有没有办法在可可中获取当前用户所有已安装的应用程序?

NSArray *runningApps = [[NSWorkspace sharedWorkspace] launchedApplications];

上面给出了我当前正在运行的应用程序,但对于我的应用程序,我需要列出所有已安装的应用程序。我需要应用程序密钥(例如 com.apple.appname),因此 system_profiler 将不起作用。


对于 OSX,收集有关可启动应用程序信息的关键库是 Launch Services(请参阅 Apple 的启动服务编程指南),这将为您提供有关应用程序的信息,例如捆绑包 ID、它接受的文件类型等。

为了实际定位计算机上的所有可执行文件,您将需要以一种或另一种形式使用 Spotlight(无论是 API 还是通过调用mdfind).

使用命令行版本的示例:

mdfind "kMDItemContentType == 'com.apple.application-bundle'"

将返回所有应用程序路径的列表。

在 Spotlight API 中使用类似的术语将产生一个适当的列表,然后您可以使用以下命令打开主包NSBundle或使用启动服务检索有关应用程序的信息。

我没有时间对此进行彻底的测试,但基本代码是:

NSMetadataQuery *query = [[NSMetadataQuery alloc] init];        
[query setSearchScopes: @[@"/Applications"]];  // if you want to isolate to Applications
NSPredicate *pred = [NSPredicate predicateWithFormat:@"kMDItemContentType == 'com.apple.application-bundle'"];

// Register for NSMetadataQueryDidFinishGatheringNotification here because you need that to
// know when the query has completed

[query setPredicate:pred];
[query startQuery]; 

(修改为使用@John 的本地化独立查询而不是我原来的查询)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

cocoa 获取已安装应用程序的列表 的相关文章

随机推荐

  • 将数字转换为日期[重复]

    这个问题在这里已经有答案了 我有一张表 其中一列的日期格式为20130109或无空格的 YearMonday 我正在尝试绘制这些点的图表 由于这种奇怪的间距 最终在图表中出现很大的间隙 因此想要将这些数字转换为日期 我一直在尝试使用as D
  • 从 nlme 摘要中提取随机效应

    我可以使用以下命令从 nlme 摘要中提取固定效果summary fm1 却苦于如何获得Random effects 部分 fm1 lt lme distance age Orthodont random age Subject summa
  • 如何在布局中使用自己的视图?

    我创建了一个这样的类 public final class MyView extends View public MyView Context context AttributeSet attrs super context attrs 然
  • 蟒蛇 |异步IO |类型错误:需要一个协程

    我正在尝试使用 asyncio 进行 python 协程编程 这是我的代码 import asyncio async def coro function return 2 2 async def get return await coro
  • 如何在 POSIX C 中枚举连接到一台机器的所有 IP 地址?

    背景 我正在编写一个建立传出 TCP IP 连接的守护程序 它将在具有多个 非环回 IP 地址的计算机上运行 我希望用户能够在守护程序的配置文件中指定用于传出连接的 IP 地址 或者 使用全部 这些地址将轮流使用 每个连接都从最近最少使用的
  • C++ 类中的重载运算符 <<

    我有一个使用结构的类 我想重载该结构的 typedef struct my struct t int a char c my struct class My Class public My Class friend ostream oper
  • 是否可以在 iOS 9 上将 iPad 应用程序设置为不进行多任务处理

    我有一个大型应用程序 需要一些时间来针对 iOS9 进行优化 编辑 我担心的是当应用程序窗口大小减小时 所有 UI 都会被挤在一起 所以我的问题是 有什么方法可以强制应用程序全屏显示吗 要为您的应用程序选择退出 禁用 多任务处理 选择您的目
  • Random.nextGaussian() 的问题

    Random nextGaussian 应该给出均值 0 和标准差 1 的随机数 它生成的许多数字都超出了 1 1 范围 我如何设置才能使其给出仅在 1到1范围内的正态分布随机数 均值为 0 标准差为 1 的高斯分布意味着分布的平均值为 0
  • 谷歌登录gapi未定义

    我正在尝试在我的网站上启用谷歌登录 该按钮有效 与我的帐户同步 但我无法从谷歌访问用户ID 这就是我的想法
  • jQuery 按类计数元素 - 实现此目的的最佳方法是什么?

    我想做的是计算当前页面中具有相同类的所有元素 然后将其添加到输入表单的名称中 基本上我允许用户单击 span 然后通过这样做为更多相同类型的项目添加另一个 但我想不出一种方法来简单地用 jQuery JavaScript 来计算所有这些 然
  • IllegalStateException 地图大小不应为 0 [重复]

    这个问题在这里已经有答案了 我有一个MapFragment显示地图 如果用户带着地图离开活动 或设备进入睡眠状态 然后回来onResume接到电话后 我将地图移回到标记处 但是当我移动相机时我遇到了异常 07 23 16 28 42 725
  • 使用 jQuery 删除文本

    有没有办法使用 jQuery 删除未包含在任何标签中的文本 p This is some text p This is unwrapped text to be removed span some more text span 感谢您的帮助
  • 为什么要执行更高阶的程序?

    因此 如果一种语言提供了更高阶的过程 那么我可以拥有返回过程的过程 就像是 define Proc a b c lambda x method body here in terms of a b c and x 要创建新程序 我只需执行以下
  • 难以实现 1Gbit UDP 吞吐量

    对于负载小于1470的UDP数据包 是否有可能达到1Gbit的吞吐量 由于数据包较小 实现这样的吞吐量应该存在一些瓶颈 I O 操作系统 网络等 我想驱动程序和硬件可能必须调整为小数据包 高吞吐量 有人尝试用小 UDP 数据包成功实现 1G
  • 如何用JavaScript获取HTML页面的标题?

    如何使用 JavaScript 获取 HTML 页面的标题 Use document title console log document title MDN 网络文档
  • 监听 .NET 控制台应用程序中的按键

    How can I continue to run my console application until a key press like Esc is pressed 我假设它缠绕在 while 循环中 我不喜欢ReadKey因为它会
  • 仅抑制对其他人代码的 pytest 警告

    我正在尝试pytest首次 如何抑制有关我的代码所依赖的其他人的代码发出的警告 而不抑制有关我自己的代码的警告 现在我的里面有这个pytest ini所以我不必看到 pytest 警告我有关某些弃用的信息jsonschema我正在使用的包
  • jQuery:触发 .click() 事件,一个接着一个

    我遇到的情况是 我必须在页面上执行多个操作才能初始化其设置 我还没有任何代码 因为坦率地说 我很难找到开始的地方 这是我想做的 jQuery document ready function element one trigger click
  • 跨域窗口之间的 postMessage 在 IE10 中不起作用(它适用于框架)

    我按照这个教程http davidwalsh name window postmessage 并创建了可在 Chrome 和 Firefox 中运行但不能在 IE 10 中运行的跨域消息传递脚本 有人能给我一些关于如何针对 IE 8 修改它
  • cocoa 获取已安装应用程序的列表

    有没有办法在可可中获取当前用户所有已安装的应用程序 NSArray runningApps NSWorkspace sharedWorkspace launchedApplications 上面给出了我当前正在运行的应用程序 但对于我的应用