也许这是一个跨系统的问题,也许不是。但我只是在Mac OS X上工作,因此我专注于Cocoa。
正如我的标题所述,我可以检测我的应用程序是否以编程方式在虚拟环境中运行? (不仅 vmware ,还有Windows中的 Sandboxie 等其他虚拟环境)
答案 0 :(得分:1)
没有任何本机Cocoa API专门询问您是在虚拟机中运行还是在真实硬件上运行。
但是,如果您知道正在运行的潜在环境,则应该能够使用IOKit查询虚拟机的硬件。
虚拟机的硬件与真正的Mac有很大不同,因此您应该能够根据硬件配置检测到真正的Mac与VM。
我不能给你任何直接代码,但是,Apple网站上有一节讨论通常使用IOKit访问硬件:
IOKit是一个高级主题,因此如果您对较低级别的API没有很多经验,那么与Cocoa相比,您可能会觉得它有点令人困惑。
答案 1 :(得分:0)
也许你可以交叉编译virt-what并使用它。
答案 2 :(得分:0)
除I / O Kit外,您还可以使用C POSIX功能。查看手册页。