registry版本错误

我想从registry中读取DirectX版本。

我在HKLM \ Software \ Microsoft \ DirectX下find值版本的值。

我的问题:提到嗨脚本专家! 我的版本“4.09.00.0904”是9.0c,但是dxdiag显示了DirectX 11。

如何find正确的版本? 或者是否有没有registry解决这个问题的方法?

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

您无法从注册表中检测到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. 读取变量( dwDirectXVersionMajor )属性dwDirectXVersionMajordwDirectXVersionMajor (systemInfo-> GetProp(…))
  6. 如果相关,也请阅读VT_BSTR属性szDirectXVersionLetter

不方便? 非常。 写一次,包装在一个实用功能,永不回头。 或者复制粘贴一个常用的实现。