2

我想从注册表中读取 DirectX 版本。

我在值版本下找到了 HKLM\Software\Microsoft\DirectX 的值。

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

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

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

4

1 回答 1

5

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

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

  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

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

于 2012-11-15T14:25:35.873 回答