title author date CreateTime categories
dotnet 通过 WMI 拿到显卡信息
lindexi
2019-08-31 16:55:58 +0800
2019-02-21 09:42:47 +0800
dotnet C# WMI

本文告诉大家如何通过 WMI 拿到显卡信息

如果使用的是 dotnet core 请先引用 Microsoft.Windows.Compatibility 才可以使用 WMI 代码

通过下面的代码可以拿到所有的显卡信息

ManagementObjectSearcher managementObject =
new ManagementObjectSearcher("select * from Win32_VideoController");

因为显卡是可能有很多个,通过这个代码就可以找到所有的显卡

创建一个字符串,收集显卡的指定信息

                var str = new StringBuilder();

                foreach (ManagementObject m in managementObject.Get())
{
foreach (var temp in new[]
{
"AcceleratorCapabilities", //AcceleratorCapabilities  --图形和视频控制器的三维阵列的能力
"AdapterCompatibility", //AdapterCompatibility  --用于此控制器与系统比较兼容性一般芯片组
"AdapterDACType", //AdapterDACType  --姓名或数字 - 模拟转换器(DAC)芯片的标识符
"AdapterRAM", //AdapterRAM  --视频适配器的内存大小
"Availability", //Availability  --可用性和设备的状态
"CapabilityDescriptions", //CapabilityDescriptions  --自由形式字符串提供更详细的解释中的任何加速器能力阵列所指示的视频加速器功能
"Caption", //Caption  --对象的简短描述
//ColorTableEntries  --尺寸系统的色表
//ConfigManagerErrorCode  --Win32的配置管理器错误代码
//ConfigManagerUserConfig  --如果为TRUE,该装置是使用用户定义的配置
//CreationClassName  --第一个具体类的名称出现在创建实例所使用的继承链
//CurrentBitsPerPixel  --使用的比特数以显示每个像素
//CurrentHorizontalResolution  --水平像素的当前数量
//CurrentNumberOfColors  --在当前的分辨率支持的色彩数目
//CurrentNumberOfColumns  --此视频控制器列(如果在字符模式下)编号
//CurrentNumberOfRows  --此视频控制器行(如果在字符模式下)编号
//CurrentRefreshRate  --频率在该视频控制器刷新监视器的图像
//CurrentScanMode  --当前扫描模式
//CurrentVerticalResolution  --当前垂直像素数量
//Description  --描述
"DeviceID", //DeviceID  --该视频控制器标识符(唯一的计算机系统)
//DeviceSpecificPens  --目前许多设备专用笔。值0xFFFF表示设备不支持笔。
//DitherType  --抖动型视频控制器
"DriverDate", //DriverDate  --当前已安装的视频驱动程序的最后修改日期和时间
"DriverVersion", //DriverVersion  --视频驱动程序的版本号
//ErrorCleared  --如果为真,报上一个错误代码属性中的错误现已清除
//ErrorDescription  --可能采取的纠正措施字符串提供有关记录在一个错误代码属性错误的详细信息
//ICMIntent  --应使用默认三种可能的配色方法或意图中的一个特定值
//ICMMethod  --处理ICM方法。对于非ICM的应用程序,这个属性决定了ICM是否已启用对于ICM的应用程序,系统将检查此属性来确定如何处理ICM支持
//InfFilename  --视频适配器的路径.inf文件
//InfSection  --Windows的视频信息所在的.inf文件
"InstallDate", //InstallDate  --安装的日期
"InstalledDisplayDrivers", //InstalledDisplayDrivers  --已安装的显示设备驱动程序的名称
//LastErrorCode  --报告的逻辑设备上一个错误代码 
//MaxMemorySupported  --以字节为单位支持的内存最高限额
//MaxNumberControlled  --可支持通过该控制器可直接寻址的实体的最大数量
//MaxRefreshRate  --在赫兹视频控制器的最大刷新率
//MinRefreshRate   --在赫兹视频控制器的最小刷新率
//Monochrome  --如果是TRUE,灰阶用于显示图像。
//Name  --标签由该对象是已知的。当子类,该属性可以被覆盖是一个关键属性。
//NumberOfColorPlanes  --当前一些颜色平面。如果该值不适用于当前视频的配置,输入0(零)
//NumberOfVideoPages  --当前的分辨率和可用内存支持视频页数
//PNPDeviceID  --即插即用逻辑设备的播放装置识别符
//PowerManagementCapabilities  --逻辑设备的特定功率相关的能力阵列
//PowerManagementSupported  --如果为TRUE,该装置可以是电源管理(可以投入挂起模式,等等)
//ProtocolSupported  --由控制器使用协议访问“控制”的设备
//ReservedSystemPaletteEntries  --系统调色板保留的条目数
//SpecificationVersion  --初始化数据规范的版本号(在其上的结构的基础)
//Status  --对象的当前状态
//StatusInfo  --对象的当前状态详细信息
//SystemCreationClassName  --该作用域计算机的创建类别名称属性的值
//SystemName  --系统的名称
//SystemPaletteEntries  --当前一些系统调色板颜色索引条目
//TimeOfLastReset  --该控制器是最后一次复位日期和时间,这可能意味着该控制器被断电或重新初始化
//VideoArchitecture  --视频体系结构的类型
//"VideoMemoryType", //VideoMemoryType  --显存类型
//VideoMode  --当前视频模式
//VideoModeDescription  --当前的分辨率,颜色和视频控制器的扫描模式设置
//VideoProcessor  --无格式的字符串描述视频处理器
})
{
str.Append(temp);
str.Append(" ");
str.Append(m[temp]?.ToString() ?? "");
str.Append("\n");
}
} return str.ToString();

因为显卡的很多信息都是不需要的,所以就注释了,小伙伴可以拿到自己需要的信息

运行上面的代码大概可以拿到这些信息

AcceleratorCapabilities :
AdapterCompatibility : Intel Corporation
AdapterDACType : Internal
AdapterRAM : 1073741824
Availability : 3
CapabilityDescriptions :
Caption : Intel(R) HD Graphics 530
DeviceID : VideoController1
DriverDate : 20181119000000.000000-000
DriverVersion : 23.20.16.4973
InstallDate :
InstalledDisplayDrivers : C:\WINDOWS\System32\DriverStore\FileRepository\igdlh64.inf_amd64_2c92d70c30b8effe\igdumdim64.
dll,C:\WINDOWS\System32\DriverStore\FileRepository\igdlh64.inf_amd64_2c92d70c30b8effe\igd10iu
md64.dll,C:\WINDOWS\System32\DriverStore\FileRepository\igdlh64.inf_amd64_2c92d70c30b8effe\ig
d10iumd64.dll,C:\WINDOWS\System32\DriverStore\FileRepository\igdlh64.inf_amd64_2c92d70c30b8ef
fe\igd12umd64.dll

通过 Caption 和驱动安装时间就可以知道当前的显卡驱动

2019-8-31-dotnet-通过-WMI-拿到显卡信息的更多相关文章

  1. dotnet 通过 WMI 拿到显卡信息

    本文告诉大家如何通过 WMI 拿到显卡信息 如果使用的是 dotnet core 请先引用 Microsoft.Windows.Compatibility 才可以使用 WMI 代码 通过下面的代码可以 ...

  2. dotnet 通过 WMI 获取系统安装软件

    本文告诉大家如何通过 WMI 获取系统安装的软件,这个方法不能获取全部的软件 通过 Win32_Product 可以获取系统安装的软件 var mc = "Win32_Product&quo ...

  3. agentzh 的 Nginx 教程(版本 2019.07.31)

    agentzh 的 Nginx 教程(版本 2019.07.31) agentzh 的 Nginx 教程(版本 2019.07.31) https://openresty.org/download/a ...

  4. C#:基于WMI查询USB设备信息 及 Android设备厂商VID列表

    /* ---------------------------------------------------------- 文件名称:WMIUsbQuery.cs 作者:秦建辉 MSN:splashc ...

  5. 通过wmi获取本地硬件信息的一些疑问。

    通过wmi获取本地硬件信息的一些疑问. http://bbs.csdn.net/topics/391017789 http://blog.csdn.net/xcntime/article/detail ...

  6. dotnet 通过 WMI 获取指定进程的输入命令行

    本文告诉大家如何使用 WMI 通过 Process 获取这个进程传入的命令行 使用下面代码,使用 Win32_Process 拿到所有的进程,通过 WHERE 判断当前的进程,然后拿到进程传入的命令 ...

  7. dotnet 通过 WMI 获取系统信息

    本文告诉大家如何通过 WMI 获取系统信息 通过 Win32_OperatingSystem 可以获取系统信息 var mc = "Win32_OperatingSystem"; ...

  8. dotnet 通过 WMI 获取系统启动的服务

    本文告诉大家如何通过 WMI 获取系统启动的服务 通过 Win32_Service 可以获取系统启动的服务 获取的时候只需要拿Caption和State就可以 var mc = "Win32 ...

  9. dotnet 通过 WMI 获取系统补丁

    本文告诉大家如何通过 WMI 获取补丁 通过 Win32_QuickFixEngineering 可以获取系统启动的服务 下面代码只是获取补丁的 kb 字符 const string query = ...

  10. dotnet 通过 WMI 获取设备厂商

    本文告诉大家如何通过 WMI 获取设备厂商 通过 Win32_ComputerSystem 可以获取电脑系统信息 通过下面代码可以获取 机器型号 和 制造厂商 var mc = "Win32 ...

随机推荐

  1. light oj 1427(ac自动机)

    #include <bits/stdc++.h> using namespace std; *; ; map<string,int>Map; struct Trie { int ...

  2. SpringBooot-基础<2>-POM.xml配置

    SpringBooot-基础<2>-POM.xml配置 项目创建完成后,需要配置pom.xml文件. pom.xml里面的配置,按需进行添加,这里提供一份参考,后面做笔记会都用到. < ...

  3. 2019.8.1 NOIP模拟测试11 反思总结

    延迟了一天来补一个反思总结 急匆匆赶回来考试,我们这边大家的状态都稍微有一点差,不过最后的成绩总体来看好像还不错XD 其实这次拿分的大都是暴力[?],除了某些专注于某道题的人以及远程爆踩我们的某学车神 ...

  4. linux设置变量的三种方法

    1在/etc/profile文件中添加变量对所有用户生效(永久的) 用VI在文件/etc/profile文件中增加变量,该变量将会对Linux下所有用户有效,并且是“永久生效”. 例如:编辑/etc/ ...

  5. Hibernate_条件查询客户列表

    分析:通过名称查询 实现: 1.在list.jsp中修改 2.修改ListCustomerServlet 首先获取cust_name,增加条件:若不为空,则模糊搜索,再调用Service方法,结果放到 ...

  6. Leetcode73. Set Matrix Zeroes矩阵置零

    给定一个 m x n 的矩阵,如果一个元素为 0,则将其所在行和列的所有元素都设为 0.请使用原地算法. 示例 1: 输入: [   [1,1,1],   [1,0,1],   [1,1,1] ] 输 ...

  7. 关闭防火墙,仍然无法访问80端口 centos

    如果你用的是阿里云,那么需要添加80端口开放才行,在云服务器-安全组-添加安全组

  8. 使用Data Lake Analytics + OSS分析CSV格式的TPC-H数据集

    0. Data Lake Analytics(DLA)简介 关于Data Lake的概念,更多阅读可以参考:https://en.wikipedia.org/wiki/Data_lake 以及AWS和 ...

  9. gb2312的6763个汉字

    0a啊阿埃挨哎唉哀皑癌蔼矮艾碍爱隘鞍氨安俺按暗岸胺案肮昂盎凹敖熬翱袄傲奥懊澳芭捌扒叭吧笆八疤巴拔跋靶把耙坝霸罢爸白柏百摆佰败拜稗斑班搬扳般颁板版扮拌伴瓣半办绊邦帮梆榜膀绑棒磅蚌镑傍谤苞胞包褒剥薄雹保堡 ...

  10. LintCode刷题笔记-- BackpackII

    标记: 动态规划 问题描述: Given n items with size Ai, an integer m denotes the size of a backpack. How full you ...