我想获得nVidia显卡的驱动程序版本。 因此,我使用WMI并从“Win32_VideoController”类的“DriverVersion”对象中获取数据。 但它就像“9.18.13.1106”(文件版本),我想要的是像“311.06”(treiber版本)。 我在哪里可以得到这些信息? 如果在WMI上是不可能的,我想知道其他方式来获取它。 谢谢。来自WMI的nVidia驱动版本不是我想要的
回答
您可以使用nVidia的Tesla Deployment Kit的NVML做到这一点。您可以检索内部驱动版本(一个你见惯了的nVidia驱动),像这样的代码:
#include <iostream>
#include <string>
#include <stdlib.h>
#include <nvml.h>
#include <windows.h>
namespace {
typedef nvmlReturn_t (*init)();
typedef nvmlReturn_t (*shutdown)();
typedef nvmlReturn_t (*get_version)(char *, unsigned);
class NVML {
init nvmlInit;
shutdown nvmlShutdown;
get_version nvmlGetDriverVersion;
std::string find_dll() {
std::string loc(getenv("ProgramW6432"));
loc += "\\Nvidia Corporation\\nvsmi\\nvml.dll";
return loc;
}
public:
NVML() {
HMODULE lib = LoadLibrary(find_dll().c_str());
nvmlInit = (init)GetProcAddress(lib, "nvmlInit");
nvmlShutdown = (shutdown)GetProcAddress(lib, "nvmlShutdown");
nvmlGetDriverVersion = (get_version)GetProcAddress(lib, "nvmlSystemGetDriverVersion");
if (NVML_SUCCESS != nvmlInit())
throw(std::runtime_error("Unable to initialize NVML"));
}
std::string get_ver() {
char buffer[81];
nvmlGetDriverVersion(buffer, sizeof(buffer));
return std::string(buffer);
}
~NVML() {
if (NVML_SUCCESS != nvmlShutdown())
throw(std::runtime_error("Unable to shut down NVML"));
}
};
}
int main() {
std::cout << "nVidia Driver version: " << NVML().get_ver();
}
需要注意的是,如果你纯粹是为了自己使用的机器,其中在写这你可以自由地编辑PATH,你可以简化这一点。大多数代码处理的事实是,它使用NVML.DLL
,它位于通常不在路径中的目录中,因此代码动态加载,并使用GetProcAddress
来查找我们需要使用的函数。在这种情况下,我们只使用了三个函数,所以它不是很难处理,但它仍然大大增加了代码的长度。
如果我们能忽略所有的废话,真正的代码将刚出来的东西这个一般顺序:
nvmlInit();
nvmlSystemGetDriverVersion(result, sizeof(result));
std::cout << result;
nvmlShutdown();
总之,构建它,你需要一个命令行类似:
cl -Ic:\tdk\nvml\include nv_driver_version.cpp
...假设您已经在c:\tdk
上安装了Tesla Deployment Kit。
无论如何,是的,我已经测试过,至少在某种程度上。在我的桌面上打印出来:
nVidia Driver version: 314.22
...这与我所安装的相符。
我真的很感谢你:) – mayTree 2013-04-09 05:59:55
这不适用于32位应用程序(Windows)。 – 2016-09-01 13:07:56
- 1. ATI/NVIDIA驱动程序的调试版本(或符号文件)是否可用?
- 2. cuda 7.0:最高NVIDIA驱动程序版本
- 3. NVIDIA-SMI失败。 Could'nt与Nvidia驱动
- 4. 需要你的想法来自动化
- 5. 来自dict.fromkeys的不想要的行为
- 6. 我不想自动更改数据库版本
- 7. CUDA驱动程序版本是不够的CUDA运行时版本
- 8. 我想要显示来自不同链接的内容
- 9. 来自WebService的WMI调用
- 10. grep的结果不是我想要的
- 11. Nvidia的GeForce驱动程序的Windows 8.1不工作在Windows 10
- 12. 想要脚本Windows WMI(wmiprvse.exe)释放文件上的句柄
- 13. 我想要数据库驱动的自动完成文本框使用javascript和数据库在c#
- 14. 输出不是我想要的
- 15. .equals(null)可能不是我想要的
- 16. VolleyError是我想要的值
- 17. 创建版本1.5 PDF而不是版本1.7来自CR2010的PDF
- 18. 即使我不想要快速动画持续时间(自动?)
- 19. 如何确定我的WebLogic Server的ojdbc驱动程序版本
- 20. 球不像我想要的
- 21. 不想要的动画
- 22. 我想每分钟自动使用脚本chmod这是我的脚本?
- 23. 想要禁用我的自举轮播自动播放
- 24. 我想要实现的SharePoint,但我想设计自己的路
- 25. powershell wmi html复制对象 - 以及我如何添加与wmi驱动器号?
- 26. NVIDIA CUDA:什么是开发者驱动程序?
- 27. 来自c的USB笔驱动器identifer#
- 28. 来自USB驱动器的Clojure REPL
- 29. 我想使用awk解析来自压缩XML提要的文本
- 30. 我是否真的需要cmake来实现构建自动化?
注册表显示你想要什么(没有NVidia驱动程序存在检查我自己) – 2013-04-09 02:11:43