有什么方法可以判断运行脚本的主机是否是 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)