检查安装的是哪个版本的DirectX [英] Check which version of DirectX is installed

查看:119
本文介绍了检查安装的是哪个版本的DirectX的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

按标题,我怎么能检查用户已经安装了该版本的DirectX? 。检查FeatureLevel是不够的,因为我的应用程序可以在功能层面10.0运行,但需要的DirectX 11.1安装

As per the title, how can I check which version of DirectX a user has installed? Checking the FeatureLevel isn't enough, as my application can run on feature level 10.0, but requires that DirectX 11.1 be installed.

为什么这不是一个重复的:

Why this is not a duplicate:


  • 如何代码得到我的机器上直接X版本C#?

    • 在这个问题的第一个回答说:如果Windows 7,支持DirectX = 11,如果Windows Vista的DirectX = 10。这是错误的,因为Vista中支持DirectX 10和11和Windows 7支持DirectX 11和11.1。

    • 第二个答案引用仅适用于DirectX 9和更低的注册表项。即使在与DirectX 11.1的Windows 7系统的安装,此注册表项将永远不会指示安装的版本比9.0C更大


    • 的回答这个问题还没有再次引用相同的注册表项,支持DirectX 9和仅低。

    我需要适用于DirectX 10的安装,最多的答案。这意味着确定它们的版本为10,10.1,11或11.1

    I need an answer that applies to DirectX 10 installs and up. That means determining if their version is 10, 10.1, 11 or 11.1.

    推荐答案

    编辑:删除注册表检查方法,因为它只能与DX< = 9(THX @Telanor)

    Removed registry check method because it works only for Dx <=9 (thx @Telanor)

    这方法是非常,非常慢,但只有一个我想通了,是100%准确。

    This method is very, very slow, but only one I figured out that is 100% accurate

    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]);
    }
    

    这篇关于检查安装的是哪个版本的DirectX的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆