限制文件夹重命名cocoa

时间:2015-02-04 06:07:32

标签: c++ objective-c c macos cocoa

 Applications folder

与Applications文件夹类似,我想限制我的应用程序的用户重命名一些文件夹(由我的应用程序创建)。 那么任何cocoa / Objective-c / c ++ API都能实现同样的目标吗?

2 个答案:

答案 0 :(得分:2)

使/Applications不被重命名的原因是它运行了拒绝删除的ACL(访问控制列表)。实际的ACL是:

group:everyone deny delete

重命名某事等同于删除旧名称并添加新名称,因此您无法删除的任何内容都无法重命名。事实上,这是一般原则 - 只是让它不可删除。 ACL只是众多方法中的一种。

请记住,只要用户拥有该文件夹,他们就可以删除ACL并删除/重命名其内容。如果他们不拥有它,你是如何创造它的? /Applications由root拥有,并且因为OS X安装程序(具有root权限)以这种方式创建它。 (不要考虑走同一条路。请求root权限只是为了满足你的整洁感。)

更重要的是:您为什么要关心用户是否重命名该文件夹?这是他们的电脑。要么总是按照你想要的名称来查找它(所以重命名它就像你的应用所关注的那样重命名),或者更好地考虑你的用户并让它们重命名以满足他们的整洁感。保留别名,以便您可以使用新名称继续使用它。

答案 1 :(得分:0)

您可以锁定该文件夹。请尝试使用NSFileManager

的文件夹的NSFileImmutable属性