【发布时间】:2017-07-17 03:32:47
【问题描述】:
我以编程方式使用预览应用程序打开图像,数据位于应用程序支持文件夹中。
NSWorkspace.SharedWorkspace.OpenFile (item.ImageUID, "Preview.app");
有没有办法给预览应用程序的写权限。 (例如旋转图像);
【问题讨论】:
标签: macos cocoa permissions preview xamarin.mac
我以编程方式使用预览应用程序打开图像,数据位于应用程序支持文件夹中。
NSWorkspace.SharedWorkspace.OpenFile (item.ImageUID, "Preview.app");
有没有办法给预览应用程序的写权限。 (例如旋转图像);
【问题讨论】:
标签: macos cocoa permissions preview xamarin.mac
是的。它是:
[[NSFileManager defaultManager] setAttributes:@{ NSFilePosixPermissions : @0666 } ofItemAtPath:(* insert filepath here) error:&error];
与 POSIX 标准一样,应用程序必须拥有文件或目录,或者必须以超级用户身份运行才能使属性更改生效。该方法尝试进行属性中指定的所有更改,并忽略对尝试修改的任何拒绝。如果路径的最后一个组件是符号链接,则遍历它。
如果您的应用不拥有该文件,则您必须提升权限。您只能以 ROOT 身份更改文件权限。文档对此很清楚:
注意:在提交到 Mac App Store 的应用程序中不允许提升权限(在 iOS 中也不可能)。
[...] 如果您必须执行需要提升权限的任务, 您必须意识到以提升的权限运行 意味着如果您的程序中存在任何安全漏洞, 攻击者也可以获得提升的权限,然后 能够执行上面列出的任何操作。
【讨论】: