检查应用程序是否已在OS X上预安装或受保护

时间:2019-05-25 15:02:34

标签: swift macos

由作者检查“ Apple”应用程序不是一个好选择,因为Apple的其他一些应用程序(例如“ Xcode”或“ Numbers”)不是系统应用程序。

我也考虑过“添加日期”,但这似乎也不是一个好选择。

isDeletableFile也失败了。

1 个答案:

答案 0 :(得分:1)

该信息似乎被编码在扩展了文件系统属性的文件夹中。

在邮件,地图,股票和消息上运行xattr会显示标记为com.apple.rootless

xattr /Applications/Mail.app/
com.apple.rootless
xattr /Applications/Maps.app/
com.apple.rootless
xattr /Applications/Stocks.app/
com.apple.rootless
xattr /Applications/Messages.app/
com.apple.rootless

而其他Apple应用程序没有此

xattr /Applications/Xcode.app/
-
xattr /Applications/Numbers.app/
-

-

在中声明的扩展属性API具有获取,设置,列出和删除属性的功能:

ssize_t getxattr(const char *path, const char *name, void *value, size_t size, u_int32_t position, int options);
int setxattr(const char *path, const char *name, void *value, size_t size, u_int32_t position, int options);
ssize_t listxattr(const char *path, char *namebuf, size_t size, int options);
int removexattr(const char *path, const char *name, int options);