是否可以检测我的 MacOS 应用程序是否在虚拟机上运行? (我不是指模拟器,只是一些虚拟机,比如 VirtualBox 或其他任何东西..)
最佳答案
我只有 VMWare,但我使用的技术可以扩展到 VirtualBox。除了下面的简单技术外,每个 VM 供应商都有一个与主机系统对话的接口(interface)。但是,他们可能需要更高的权限。
VMware
- VMWare 工具 如果安装了 VMWare Tools,您可以检查以下文件。
GFX卡
您可以检查是否安装了VmTools。特别是 VMwareGfx.kext
在 /Library/Extensions
文件夹中的存在
VMware Tools 守护进程启动器
/Library/LaunchDaemons/com.vmware.launchd.vmware-tools-userd
VMware Tools 守护进程
/Library/Application Support/VMware Tools/vmware-tools-daemon
您还可以通过检查 IORegistry
检查是否存在 VMware 显卡
由于 VMware GFX 具有以下
设备 ID:0x0405 修订 ID:0x0000 供应商 ID:0x15ad
- 模型标识符
您可以使用
system_profiler
获取有关设备的所有信息
例如 system_profiler SPHardwareDataType
给出以下信息
Hardware Overview:
Model Name: Apple device
Model Identifier: VMware7,1
Processor Speed: 3.23 GHz
Number of Processors: 2
Total Number of Cores: 2
L2 Cache (per Processor): 256 KB
L3 Cache (per Processor): 6 MB
Memory: 2 GB
Boot ROM Version: VMW71.00V.0.B64.1507021939
SMC Version (system): 2.8f0
Serial Number (system): VMiZVX4JH1rt
Hardware UUID: 564D8995-57E0-91F5-AEDF-1968AB31F81E
Model Identifier和Boot ROM可以用来查出VMware
system_profiler SPHardwareDataType | awk '/模型标识符/{print $3}'
其他虚拟设备
- VMware 虚拟 SATA 硬盘
- VMware 虚拟 USB
- VMware 虚拟 SATA CDRW 驱动器
关于swift - 检测在虚拟机上运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43026032/