objective-c - cocoa中能否判断操作系统是否运行在虚拟机中?

标签 objective-c macos cocoa virtual-machine vmware

也许这是一个跨系统问题,也许不是。但我只在 Mac OS X 上工作,因此我专注于 Cocoa。

正如我的标题所述,我可以检测我的应用程序是否以编程方式在虚拟环境中运行吗? (不仅是vmware,还包括其他一些虚拟环境,例如Windows中的Sandboxie)

最佳答案

不会有任何原生 Cocoa API 专门询问您是在虚拟机还是真实硬件中运行。

但是,如果您知道正在运行的潜在环境,您应该能够使用 IOKit 查询虚拟机的硬件。

虚拟机的硬件与真实 Mac 的硬件有很大不同,因此您应该能够根据硬件配置来检测真实 Mac 与虚拟机。

我无法给您任何直接代码,但是,Apple 网站上有一个部分讨论了如何使用 IOKit 访问硬件:

https://developer.apple.com/library/mac/documentation/DeviceDrivers/Conceptual/AccessingHardware/AH_IOKitLib_API/AH_IOKitLib_API.html

IOKit 是一门高级主题,因此如果您没有丰富的底层 API 经验,您可能会发现它与 Cocoa 相比有点令人困惑。

关于objective-c - cocoa中能否判断操作系统是否运行在虚拟机中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21329414/

相关文章:

ios - ios中的jwplayer未捕获异常

iphone - 识别 'if statement' 中的按钮按下

python - 在 tkinter 上运行的多个应用程序/文件/windows 实例

c++ - 疯狂的 Mac 动态库(可能仅限 Fortran)

cocoa - 沙箱和目录列表

swift - NSToolbar - 我们什么时候可以访问 ToolBarItem?

cocoa - NSButton 的图像在选择时失去透明度

ios - 将 tableView 滚动到底部以选择最后一行

ios - 如何在 UINavigationController 标题中的图 block 旁边添加图标?

objective-c - 如何检测/观察第三方应用何时启动全屏进程?