注册表版本错误

时间:2012-11-15 13:12:48

标签: windows registry directx directx-9

我想从Registry阅读DirectX版本。

我在HKLM \ Software \ Microsoft \ DirectX下找到值Version Version。

我的问题:参考Hey Scripting Guy!我的版本“4.09.00.0904”是9.0c,但dxdiag显示的是DirectX 11.

如何找到合适的版本?或者,如果没有注册表,可能有办法解决这个问题吗?

编辑: 我正在使用Windows 7 Professional x86

1 个答案:

答案 0 :(得分:5)

您无法从注册表中检测到DirectX 9以上的任何版本。它根本没有存储在那里。

对于版本10及更高版本,您应该使用COM接口到DXDiag。

  1. 实例化DXDiagProvider(CoCreateInstance( CLSID_DxDiagProvider,... IID_IDxDiagProvider,...)
  2. 初始化它(pDxDiagProvider-> Initialize)
  3. 打开根容器(pDxDiagProvider-> GetRootContainer)
  4. 打开子容器DxDiag_SystemInfo(rootContainer-> GetChildContainer(L“DxDiag_SystemInfo”,...)
  5. 阅读变体(VT_UI4)属性dwDirectXVersionMajordwDirectXVersionMajor(systemInfo-> GetProp(...))
  6. 如果相关,请同时阅读VT_BSTR属性szDirectXVersionLetter
  7. 不方便?非常。写一次,包装在效用函数中,永不回头。或者复制粘贴其中一个common implementations.