gpt4 book ai didi

objective-c - 在沙盒 Mavericks 应用程序中卸载 USB 设备

转载 作者:行者123 更新时间:2023-12-03 17:20:27 25 4
gpt4 key购买 nike

我编写了一个沙盒应用程序,用于处理 Yosemite (10.10) 下的 USB 驱动器。当应用程序完成其工作后,我想为用户提供弹出设备的选项。

在Yosemite下这不是问题,我成功使用了

DADiskUnmount() 

[NSWorkspace unmountAndEjectDeviceAtURL:error:]

但是在 Mavericks (10.9) 下,这两种方法都不起作用。我仔细检查了整个代码,并且非常有信心不存在 SDK 冲突。

我收到以下错误消息

Sandbox denied authorizing right 'system.volume.external.unmount' by client <MyApp>

我获得了所有与USB相关的权利,使用安全范围的书签(带startAccessingSecurityScopedResource和不带),修复了测试设备上的磁盘权限,使用不同类型的USB设备进行测试,检查设备上是否有打开的文件并尝试kDADiskUnmountOptionForce。

system.volume.external.(adopt|encode|mount|rename|unmount) 

授权权限仅出现在10.8和10.9上。来源:link

有没有办法授予我的应用程序此权利?

如果有人能帮助我,那就太好了!

最佳答案

Aperture 使用沙箱 "big red button" ( com.apple.security.temporary-exception.sbpl ) 要做 system.volume.external.mount/unmount .

来自Aperture's entitlements file :


<key>com.apple.security.temporary-exception.sbpl</key>
<string>
(begin
(allow authorization-right-obtain (right-name "system.volume.external.mount"))
(allow authorization-right-obtain (right-name "system.volume.external.unmount"))
(deny network-outbound (with no-log)
(regex #"^/private/tmp/launch-"))
(allow file-ioctl
(literal "/dev/ptmx")
(literal "/dev/null")
(literal "/dev/tty")
(regex #"^/dev/ttys"))
(allow file-search)
(allow ipc-posix-sem)
(allow system-fsctl))
</string>

不知道 Apple 是否会在 MAS 中允许这样做。

关于objective-c - 在沙盒 Mavericks 应用程序中卸载 USB 设备,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31049499/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com