关于objective C:在沙盒小牛应用程序中卸载 USB 设备 | 珊瑚贝

Unmount USB device in sandboxed Mavericks application


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

在Yosemite下没问题,我成功使用

1
DADiskUnmount()

1
[NSWorkspace unmountAndEjectDeviceAtURL:error:]

但在 Mavericks (10.9) 下,这两种方法都行不通。
我仔细检查了我的整个代码,我非常有信心没有 SDK 冲突。

我收到以下错误消息

1
Sandbox denied authorizing right ‘system.volume.external.unmount’ by client <MyApp>

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

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

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

有没有办法授予我的应用此权限?

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


Aperture 使用沙盒”红色大按钮”(com.apple.security.temporary-exception.sbpl)来做system.volume.external.mount/unmount。

来自 Aperture 的授权文件:

<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 中允许这样做。

  • 嘿!现在我想把这个提交给 MAS……你能解释一下每一行,或者给我一个资源链接,我可以在那里阅读这些信息吗?我想正确解释为什么我在我的权利文件中写了这个,以便它可以被接受。
  • 嗯,我想只是说实话,它在 Aperture 的权利文件中,如果没有它,在 Mavericks 下弹出将不起作用。您是否尝试过删除其他一些行?就像只留下”允许授权-获得”行进行卸载,看看它是否有效?他们可能更有可能在允许的情况下批准它。
  • 当我离开允许授权-正确-获取(正确名称”system.volume.external.unmount)”时,它可以工作……现在我正在等待审查:)


来源:https://www.codenong.com/31049499/

微信公众号
手机浏览(小程序)

Warning: get_headers(): SSL operation failed with code 1. OpenSSL Error messages: error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57

Warning: get_headers(): Failed to enable crypto in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57

Warning: get_headers(https://static.shanhubei.com/qrcode/qrcode_viewid_9877.jpg): failed to open stream: operation failed in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57
0
分享到:
没有账号? 忘记密码?