C# 从.net应用程序检测Bootcamp
我目前正在开发一个用WPF(C#)编写的Windows应用程序,我希望只有当应用程序运行在通过Bootcamp运行Windows的Apple计算机上时,才能启用某些功能。我没有在任何地方找到任何关于它的问题,也没有在网上找到它的解决方案。是否可以检测训练营?如果是,怎么做?我从未想过检查BIOS供应商信息。多亏了凯尔的主意。以下是针对其他人的解决方案: 首先,您需要添加C# 从.net应用程序检测Bootcamp,c#,.net,bootcamp,C#,.net,Bootcamp,我目前正在开发一个用WPF(C#)编写的Windows应用程序,我希望只有当应用程序运行在通过Bootcamp运行Windows的Apple计算机上时,才能启用某些功能。我没有在任何地方找到任何关于它的问题,也没有在网上找到它的解决方案。是否可以检测训练营?如果是,怎么做?我从未想过检查BIOS供应商信息。多亏了凯尔的主意。以下是针对其他人的解决方案: 首先,您需要添加System.Management作为参考。您还需要添加以下名称空间: using System.Management; usi
System.Management
作为参考。您还需要添加以下名称空间:
using System.Management;
using Windows.System;
在此之后,您将需要以下代码来了解机器是否由Apple制造:
public bool IsMadeByApple()
{
ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_BIOS");
ManagementObjectCollection collection = searcher.Get();
string manufacturer = "";
foreach (ManagementObject obj in collection)
{
manufacturer = (string)obj["Manufacturer"]; // Will be "Apple Inc." if it's an Apple computer
}
return (manufacturer == "Apple Inc.");
}
您可以这样使用它:
MessageBox.Show(IsMadeByApple().ToString());
这将弹出一个消息框。如果是苹果电脑,它会说“真”,如果不是,它会说“假”
此解决方案仅在2015年初运行MacBook Pro的训练营上进行测试。此解决方案可能无法在不同的模型上工作,但它可能会工作
您可以尝试使用WMI检测bios供应商,如果其中提到Apple,则这是一个Bootcamp安装(或parallels-尚未检查此理论)。据我所知,如果它是在bootcamp中运行的,它也可能是任何intel PC,也可以查找特定于Apple的注册表项或设备,并查找并行项以排除VM。但是,是的,新兵训练营是双重启动的,它像任何其他PC一样启动Windows native,而不是作为某种东西的客人。