也许这是一个跨系统问题,也许不是。但我只在 Mac OS X 上工作,因此我专注于 Cocoa。
正如我的标题所述,我可以检测我的应用程序是否以编程方式在虚拟环境中运行吗? (不仅是vmware,还包括其他一些虚拟环境,例如Windows中的Sandboxie)
最佳答案
不会有任何原生 Cocoa API 专门询问您是在虚拟机还是真实硬件中运行。
但是,如果您知道正在运行的潜在环境,您应该能够使用 IOKit 查询虚拟机的硬件。
虚拟机的硬件与真实 Mac 的硬件有很大不同,因此您应该能够根据硬件配置来检测真实 Mac 与虚拟机。
我无法给您任何直接代码,但是,Apple 网站上有一个部分讨论了如何使用 IOKit 访问硬件:
IOKit 是一门高级主题,因此如果您没有丰富的底层 API 经验,您可能会发现它与 Cocoa 相比有点令人困惑。
关于objective-c - cocoa中能否判断操作系统是否运行在虚拟机中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21329414/