如何使用C#在我的计算机上进行编码以获取直接的X版本? [重复]

|                                                                                                                   这个问题已经在这里有了答案:                                                      
已邀请:
        这可能会有所帮助:.NET如何检测是否支持DirectX 10? 编辑: 下面是我认为更好的代码。在DX10或DX11的情况下,我能想到的最好是基于Windows版本的检查。这不是100%准确的(因为Vista可以升级到DX11,但我不检查),但是总比没有好。
    private int GetDirectxMajorVersion()
    {
        int directxMajorVersion = 0;

        var OSVersion = Environment.OSVersion;

        // if Windows Vista or later
        if (OSVersion.Version.Major >= 6)
        {
            // if Windows 7 or later
            if (OSVersion.Version.Major > 6 || OSVersion.Version.Minor >= 1)
            {
                directxMajorVersion = 11;
            }
            // if Windows Vista
            else
            {
                directxMajorVersion = 10;
            }
        }
        // if Windows XP or earlier.
        else
        {
            using (RegistryKey key = Registry.LocalMachine.OpenSubKey(@\"SOFTWARE\\Microsoft\\DirectX\"))
            {
                string versionStr = key.GetValue(\"Version\") as string;
                if (!string.IsNullOrEmpty(versionStr))
                {
                    var versionComponents = versionStr.Split(\'.\');
                    if (versionComponents.Length > 1)
                    {
                        int directXLevel;
                        if (int.TryParse(versionComponents[1], out directXLevel))
                        {
                            directxMajorVersion = directXLevel;
                        }
                    }
                }
            }
        }

        return directxMajorVersion;
    }
    
        在另一个链接中找到了这个问题,但是我发现解决方案并不完美,因此我发表了解决问题的想法。但要注意:它非常非常慢。 编辑:删除了注册表检查方法,因为它仅适用于Dx <= 9(thx @Telanor) 这种方法非常非常慢,但是我发现只有一种方法是100%准确的
private static int checkdxversion_dxdiag()
{
    Process.Start(\"dxdiag\", \"/x dxv.xml\");
    while (!File.Exists(\"dxv.xml\"))
        Thread.Sleep(1000);
    XmlDocument doc = new XmlDocument();
    doc.Load(\"dxv.xml\");
    XmlNode dxd = doc.SelectSingleNode(\"//DxDiag\");
    XmlNode dxv = dxd.SelectSingleNode(\"//DirectXVersion\");

    return Convert.ToInt32(dxv.InnerText.Split(\' \')[1]);
}
    

要回复问题请先登录注册