检查安装的是哪个版本的DirectX [英] Check which version of DirectX is installed
问题描述
按标题,我怎么能检查用户已经安装了该版本的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屋!