我正在为macOS编写一个应用程序,其主要目标是以某种方式管理任意用户文件。 “管理”包括任意读/写/更新这些文件。管理在内部不是离散事件,可能包含多个空闲时段。但是,它必须对用户显示。
注意:“用户”一词包括任何及所有用户活动(即通过Finder)或用户启动的流程(即用户打开的其他应用程序;虽然不是以root身份运行,但与我自己的应用程序的权限类似。)
我的应用程序不会将这些文件存储在自有容器(例如沙盒应用程序容器)中,而是在后台连续运行,跟踪这些文件,监视更改并根据需要进行管理。
此“管理”的持续时间可能从几毫秒到几个小时不等。
我正在尝试编写一个构造(即class
/ struct
)来封装对这些“热”文件(即管理下的文件)的引用。在管理期间,用户不能能够读取/写入/删除这些文件,除非应用程序明确退出(通过正常退出/强制退出,无论如何)。
有什么方法可以“锁定”文件,以防止用户读/写/更新和/或甚至修改权限?
以下是两种可能的解决方案:
第三种,但不是真正的解决方案,只是不试图“锁定”任何这些文件。我可以持续监控文件,并提醒用户任何故障。我真的不想这样做,因此问题。
第二种解决方案看起来很有希望。但是,我无法找到任何允许我与文件ACL(访问控制列表)连接的高级API。我甚至不确定我是否正确理解它是如何工作的,所以请随意在这个思想的基础上再把它变成一个具体的答案。
我也很好奇Finder似乎知道其他进程是否正在使用文件。再一次,我想我知道,但我不完全确定,所以最好在这里问一下主要问题。