注册表版本错误

das*_*s_j 2 windows registry directx directx-9

我想从Registry中读取DirectX版本.

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

我的问题:提到嘿脚本专家!我的版本"4.09.00.0904"是9.0c,但dxdiag显示DirectX 11.

如何找到合适的版本?或者有没有办法在没有注册表的情况下解决这个问题?

编辑:我使用的是Windows 7 Professional x86

Pau*_*Jan 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.

不方便?非常.写一次,包装在效用函数中,永不回头.或者复制粘贴其中一个常见的实现.