我如何通过编程判断运行脚本的主机是否是 VirtualBox VM?

我如何通过编程判断运行脚本的主机是否是 VirtualBox VM?

有什么方法可以判断运行脚本的主机是否是 VirtualBox 客户虚拟机?理想情况下,我正在寻找一种跨平台的方法。我认为这几乎是不可能的,除非 Guest Additions 中的某些功能提供了此功能。

答案1

在 Linux 下进行了一些探索,dmidecode | less结果是:

# dmidecode 2.10
SMBIOS 2.5 present.
5 structures occupying 256 bytes.
Table at 0x000E1000.

Handle 0x0000, DMI type 0, 20 bytes
BIOS Information
        Vendor: innotek GmbH
        Version: VirtualBox

Windows 版本(感谢 Andrew Koester 的指点)

C:\> wmic bios get smbiosbiosversion
SMBIOSBIOSVersion
VirtualBox

Solaris 有一个等效版本,但我无法测试它,因为我只能访问 Sparc 机器。但为了完整起见,这里是它:/usr/sbin/smbios

答案2

在 Windows 中,您可以使用 WMI 查询 BIOS 信息。http://msdn.microsoft.com/en-us/library/aa394077%28VS.85%29.aspx

我不相信你会找到一个跨平台的解决方案,至少在没有完全深入并直接从低级内存中读取它的情况下。(在这种情况下,你可能会对源代码到 dmidecode)

相关内容