我已经研究了几天如何以编程方式区分(C#) 如果我的软件(Windows)在VM或物理机上运行。我找到的方法有两个:
我发现很难相信我们没有明确的解决方案来做出这种区分。任何人都可以为这个问题共享一段强大的代码吗?
答案 0 :(得分:1)
我的建议是轮询运行应用程序的计算机的注册表,以获取VM插入的特定密钥。物理机器不太可能拥有密钥。
例如,下面是我的一个VMware开发箱中某些键的屏幕截图
如果运行VMware,您可以从应用程序中检查是否存在部分或全部密钥。
由于这是用C#标记的,我建议您使用以下Stack Overflow问题中的方法:Read Registry Keys via C#
相同的方法适用于任何其他VM系统。
答案 1 :(得分:0)
据我所知,无法确定您是否处于虚拟环境中。
我会从:
开始可能还有别的......