Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从.net应用程序检测Bootcamp_C#_.net_Bootcamp - Fatal编程技术网

C# 从.net应用程序检测Bootcamp

C# 从.net应用程序检测Bootcamp,c#,.net,bootcamp,C#,.net,Bootcamp,我目前正在开发一个用WPF(C#)编写的Windows应用程序,我希望只有当应用程序运行在通过Bootcamp运行Windows的Apple计算机上时,才能启用某些功能。我没有在任何地方找到任何关于它的问题,也没有在网上找到它的解决方案。是否可以检测训练营?如果是,怎么做?我从未想过检查BIOS供应商信息。多亏了凯尔的主意。以下是针对其他人的解决方案: 首先,您需要添加System.Management作为参考。您还需要添加以下名称空间: using System.Management; usi

我目前正在开发一个用WPF(C#)编写的Windows应用程序,我希望只有当应用程序运行在通过Bootcamp运行Windows的Apple计算机上时,才能启用某些功能。我没有在任何地方找到任何关于它的问题,也没有在网上找到它的解决方案。是否可以检测训练营?如果是,怎么做?

我从未想过检查BIOS供应商信息。多亏了凯尔的主意。以下是针对其他人的解决方案:

首先,您需要添加
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,而不是作为某种东西的客人。