关于.NET中OperatingSystem类在虚拟机环境下的行为疑问
关于.NET中OperatingSystem类在虚拟机环境下的行为疑问
嗨,这个问题问得特别实用!我来给你把这个点说清楚:
OperatingSystem.IsWindows() 方法只会识别当前应用程序运行所在的操作系统环境——也就是虚拟机内部的操作系统,完全不会感知到宿主机的系统。
举两个实际场景你就更明白了:
- 如果你在Windows宿主机上装了Linux虚拟机,然后在Linux虚拟机里运行你的.NET程序,调用这个方法会返回
false; - 反过来,要是你在Linux宿主机上的Windows虚拟机里跑程序,调用它就会返回
true。
本质上,虚拟机对于运行在它内部的程序来说,就是一个完全独立、完整的操作系统环境。.NET的这个API是直接读取当前进程所在的操作系统内核提供的系统标识信息,程序根本不知道自己是在虚拟机里运行,自然只会读取虚拟机的系统信息啦。
备注:内容来源于stack exchange,提问作者Murat
相关产品推荐
相关产品推荐

