【发布时间】:2017-01-26 23:58:36
【问题描述】:
我正在开发一个 macOS 应用程序(在 Mac App Store 之外分发),我从 Internet 下载一些文件,在 localDomainMask 下的 applicationSupportDirectory 中创建一些文件夹,并将这些文件写入创建的文件夹,使用 NSFileManager 类。
该应用在管理员用户帐户中运行时运行良好,但当该帐户没有管理员权限时(例如,如果我将其用作来宾用户)则不能。
如何让应用请求管理员权限,以便 NSFileManager 不会引发与权限相关的错误?
【问题讨论】:
-
你处理这个错误。以任何用户身份运行的应用程序可以写入该用户的应用程序支持目录(应用程序应在其中创建自己的子目录)。如果您的应用程序由于权限错误而失败,那么它正在写入不应该写入的地方。准确检查您的应用正在写入的位置、文件夹的权限等。如果需要,请在新创建的用户帐户中进行测试。如果您找不到问题,请编辑您的问题以显示确切的路径、权限等,有人可能会帮助您解决问题。
-
您好,感谢您的评论。我已经检查过了,实际上只有在
localDomainMask下写入时,当用户不是管理员时它才会失败(我已经更新了第一段)。实际上,如果用户不是管理员,它不应该写在那里,所以我的问题仍然存在:我怎样才能让应用程序要求管理员权限,以便 NSFileManager 不会引发与权限相关的错误? -
你使用
localDomainMask而不是userDomainMask有什么原因吗?后者是当前用户的应用程序支持(或沙盒位置),您应该始终拥有其中任何一个的写入权限; IIRClocal是 /Library 中的那个。 -
这是一个非常好的问题,在确认即使没有管理员权限也可以写信给
userDomainMask后,我已经与我的团队分享了这个问题。
标签: macos cocoa nsfilemanager