2013-06-16 22 views
5

タイトルごとに、どのバージョンのDirectXがインストールされているかを確認するにはどうすればよいですか? FeatureLevelをチェックするだけでは不十分です。私のアプリケーションは、機能レベル10.0で動作することができますが、DirectX 11.1がインストールされている必要があります。インストールされているDirectXのバージョンを確認してください

これは重複しない理由:

  • How to code to get direct X version on my machine in C#?
    • この質問の最初の答えは、 "Windows 7の、のDirectX = 11、もしWindows Vistaでは、DirectXの= 10であれば" と言います。 VistaはDirectX 10と11の両方をサポートしており、Windows 7はDirectX 11と11.1をサポートしているため、これは間違っています。
    • 2番目の回答は、DirectX 9以下にのみ適用されるレジストリキーを参照しています。でも11.1がインストールされてのDirectXを使用してWindows 7のシステムでは、このレジストリキーがインストールされたバージョンを示していることは決してありませんより大きい9.0c以降
  • .NET How to detect if DirectX 10 is supported?
    • この質問に対する答えはまだ再びDirectXのための同じレジストリキーを参照します9以下のみ。

私は、DirectX 10のインストールとセットアップに適用される答えを必要とします。これは、バージョンが10,10.1,11、または11.1であるかどうかを判断することを意味します。

答えて

3

EDIT:それは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]); 
} 
+0

多少ですが、それは遅くて厄介です。コマンドプロンプトでの簡単なテストから、私はそれが容認できないほど遅いと言います。 – Telanor

+1

私はそれを認識しています。最悪のことは、コマンドプロンプトから 'dxdiag/x file.xml'を実行するときです。プロセス終了後にファイルが表示されるのを待たなければなりません。 レジストリ 'HKLM \ Software \ Microsoft \ DirectX \ Version'からいつでもバージョン文字列を読み取り、それを解読することができます。私は自分の答えを編集する –

+4

そのレジストリキーはdirectx 9以下にのみ適用されます – Telanor

関連する問題