我可以确定操作系统是否在可可的虚拟机中运行?

时间:2014-01-24 09:50:33

标签: objective-c macos cocoa virtual-machine vmware

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

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

3 个答案:

答案 0 :(得分:1)

没有任何本机Cocoa API专门询问您是在虚拟机中运行还是在真实硬件上运行。

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

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

我不能给你任何直接代码,但是,Apple网站上有一节讨论通常使用IOKit访问硬件:

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

IOKit是一个高级主题,因此如果您对较低级别的API没有很多经验,那么与Cocoa相比,您可能会觉得它有点令人困惑。

答案 1 :(得分:0)

也许你可以交叉编译virt-what并使用它。

答案 2 :(得分:0)

除I / O Kit外,您还可以使用C POSIX功能。查看手册页。