【问题标题】:Is there way to force eject the drive automatically in Cocoa有没有办法在 Cocoa 中强制自动弹出驱动器
【发布时间】:2014-01-20 21:25:04
【问题描述】:

我想在 Cocoa 中强制弹出驱动器。我找到了如下方法:

  1. 我将使用命令弹出驱动器:hdiutil eject -force /Volumes/TRAVELDRIVE
  2. 然后我将使用NSTask从Cocoa应用程序执行这个命令终端。

我可以通过使用上述步骤来做到这一点吗?如果您有最佳解决方案,请给我任何想法。提前致谢。

【问题讨论】:

  • 你试过了吗?当你这样做时发生了什么?

标签: objective-c macos cocoa


【解决方案1】:

您可以尝试 BSD API,即

打开设备(fd = open("/dev/disk1", O_RDONLY))

并将弹出ioctl 发送给它。查看/usr/include/dev/disk.h

这可能会在没有先卸载卷的情况下弹出设备,这会使事情处于不一致的状态...

*Source...

【讨论】:

  • 谢谢,我会看看信息。
  • 我能再问你一件事吗?在 MAC OS 上,我可以设置权限或做任何事情来阻止用户使用我的应用程序吗?我的意思是我想拒绝普通用户(不是管理员)删除我的应用程序。我可以这样做吗?
【解决方案2】:

使用 I/O Kit 或 POSIX API 或 NSTask 或 AppleScript。 没有提供 Objective-C API。

【讨论】:

  • Applescript 在沙盒应用程序中会失败。还有 NSTask ……那怎么弹出来,你说没有可用的 api 那么这个类怎么办?
猜你喜欢
  • 1970-01-01
  • 2011-10-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-27
  • 2013-09-12
相关资源
最近更新 更多