加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

C#获取电脑型号、系统版本、内存大小、硬盘大小、CPU信息

发布时间:2020-12-15 04:37:46 所属栏目:百科 来源:网络整理
导读:摘要 有时需要获取电脑的相关信息。这时可以通过调用windows api的方式,进行获

摘要

有时需要获取电脑的相关信息。这时可以通过调用windows api的方式,进行获取。

方法

可以通过在powershell中 通过下面的命令进行查询,然后可以通过c#调用获取需要的信息。

gwmi + windows api?

如图所示

对应的c#代码为

result = = hdId = = = (ManagementObject m capacity =) + = sb.ToString().TrimEnd( } </span><span style="color: #0000ff;"&gt;return</span><span style="color: #000000;"&gt; result; }</span></pre>

API和Keys枚举

}</span></pre>

Computer类

_lock = (_instance == (_instance == = Tuple<,><,> result = str = = = (ManagementObject m name =[] parts = name.Split(= Tuple<,>(parts[].Split()[] + ,parts[ } </span><span style="color: #0000ff;"&gt;catch</span><span style="color: #000000;"&gt; { } </span><span style="color: #0000ff;"&gt;return</span><span style="color: #000000;"&gt; result; } </span><span style="color: #808080;"&gt;///</span> <span style="color: #808080;"&gt;<summary></span> <span style="color: #808080;"&gt;///</span><span style="color: #008000;"&gt; 获取cpu核心数 </span><span style="color: #808080;"&gt;///</span> <span style="color: #808080;"&gt;</summary></span> <span style="color: #808080;"&gt;///</span> <span style="color: #808080;"&gt;<returns></returns></span> <span style="color: #0000ff;"&gt;public</span> <span style="color: #0000ff;"&gt;string</span><span style="color: #000000;"&gt; GetCPU_Count() { </span><span style="color: #0000ff;"&gt;string</span> str = <span style="color: #800000;"&gt;"</span><span style="color: #800000;"&gt;查询失败</span><span style="color: #800000;"&gt;"</span><span style="color: #000000;"&gt;; </span><span style="color: #0000ff;"&gt;try</span><span style="color: #000000;"&gt; { </span><span style="color: #0000ff;"&gt;int</span> coreCount = <span style="color: #800080;"&gt;0</span><span style="color: #000000;"&gt;; </span><span style="color: #0000ff;"&gt;foreach</span> (<span style="color: #0000ff;"&gt;var</span> item <span style="color: #0000ff;"&gt;in</span> <span style="color: #0000ff;"&gt;new</span> System.Management.ManagementObjectSearcher(<span style="color: #800000;"&gt;"</span><span style="color: #800000;"&gt;Select * from </span><span style="color: #800000;"&gt;"</span> +<br><span style="color: #000000;"&gt; WindowsAPIType.Win32_Processor.ToString()).Get()) { coreCount </span>+= <span style="color: #0000ff;"&gt;int</span><span style="color: #000000;"&gt;.Parse(item[WindowsAPIKeys.NumberOfCores.ToString()].ToString()); } </span><span style="color: #0000ff;"&gt;if</span> (coreCount == <span style="color: #800080;"&gt;2</span><span style="color: #000000;"&gt;) { </span><span style="color: #0000ff;"&gt;return</span> <span style="color: #800000;"&gt;"</span><span style="color: #800000;"&gt;双核</span><span style="color: #800000;"&gt;"</span><span style="color: #000000;"&gt;; } str </span>= coreCount.ToString() + <span style="color: #800000;"&gt;"</span><span style="color: #800000;"&gt;核</span><span style="color: #800000;"&gt;"</span><span style="color: #000000;"&gt;; } </span><span style="color: #0000ff;"&gt;catch</span><span style="color: #000000;"&gt; { } </span><span style="color: #0000ff;"&gt;return</span><span style="color: #000000;"&gt; str; } </span><span style="color: #808080;"&gt;///</span> <span style="color: #808080;"&gt;<summary></span> <span style="color: #808080;"&gt;///</span><span style="color: #008000;"&gt; 获取系统内存大小 </span><span style="color: #808080;"&gt;///</span> <span style="color: #808080;"&gt;</summary></span> <span style="color: #808080;"&gt;///</span> <span style="color: #808080;"&gt;<returns></span><span style="color: #008000;"&gt;内存大小(单位M)</span><span style="color: #808080;"&gt;</returns></span> <span style="color: #0000ff;"&gt;public</span> <span style="color: #0000ff;"&gt;string</span><span style="color: #000000;"&gt; GetPhisicalMemory() { ManagementObjectSearcher searcher </span>= <span style="color: #0000ff;"&gt;new</span> ManagementObjectSearcher(); <span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt;用于查询一些如系统信息的管理对象 </span> searcher.Query = <span style="color: #0000ff;"&gt;new</span> SelectQuery(WindowsAPIType.Win32_PhysicalMemory.ToString(),<span style="color: #800000;"&gt;""</span>,<br><span style="color: #0000ff;"&gt;new</span> <span style="color: #0000ff;"&gt;string</span>[] { WindowsAPIKeys.Capacity.ToString() });<span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt;设置查询条件 </span> ManagementObjectCollection collection = searcher.Get(); <span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt;获取内存容量 </span> ManagementObjectCollection.ManagementObjectEnumerator em =<span style="color: #000000;"&gt; collection.GetEnumerator(); </span><span style="color: #0000ff;"&gt;long</span> capacity = <span style="color: #800080;"&gt;0</span><span style="color: #000000;"&gt;; </span><span style="color: #0000ff;"&gt;while</span><span style="color: #000000;"&gt; (em.MoveNext()) { ManagementBa<a href="https://www.52php.cn/tag/SEO/" title="SEO">SEO</a>bject ba<a href="https://www.52php.cn/tag/SEO/" title="SEO">SEO</a>bj </span>=<span style="color: #000000;"&gt; em.Current; </span><span style="color: #0000ff;"&gt;if</span> (ba<a href="https://www.52php.cn/tag/SEO/" title="SEO">SEO</a>bj.Properties[WindowsAPIKeys.Capacity.ToString()].Value != <span style="color: #0000ff;"&gt;null</span><span style="color: #000000;"&gt;) { </span><span style="color: #0000ff;"&gt;try</span><span style="color: #000000;"&gt; { capacity </span>+= <span style="color: #0000ff;"&gt;long</span><span style="color: #000000;"&gt;.Parse(ba<a href="https://www.52php.cn/tag/SEO/" title="SEO">SEO</a>bj.Properties[WindowsAPIKeys.Capacity.ToString()].Value.ToString()); } </span><span style="color: #0000ff;"&gt;catch</span><span style="color: #000000;"&gt; { </span><span style="color: #0000ff;"&gt;return</span> <span style="color: #800000;"&gt;"</span><span style="color: #800000;"&gt;查询失败</span><span style="color: #800000;"&gt;"</span><span style="color: #000000;"&gt;; } } } </span><span style="color: #0000ff;"&gt;return</span> CommonUtlity.ToGB((<span style="color: #0000ff;"&gt;double</span>)capacity,<span style="color: #800080;"&gt;1024.0</span><span style="color: #000000;"&gt;); } </span><span style="color: #808080;"&gt;///</span> <span style="color: #808080;"&gt;<summary></span> <span style="color: #808080;"&gt;///</span><span style="color: #008000;"&gt; 获取硬盘容量 </span><span style="color: #808080;"&gt;///</span> <span style="color: #808080;"&gt;</summary></span> <span style="color: #0000ff;"&gt;public</span> <span style="color: #0000ff;"&gt;string</span><span style="color: #000000;"&gt; GetDiskSize() { </span><span style="color: #0000ff;"&gt;string</span> result = <span style="color: #0000ff;"&gt;string</span><span style="color: #000000;"&gt;.Empty; StringBuilder sb </span>= <span style="color: #0000ff;"&gt;new</span><span style="color: #000000;"&gt; StringBuilder(); </span><span style="color: #0000ff;"&gt;try</span><span style="color: #000000;"&gt; { </span><span style="color: #0000ff;"&gt;string</span> hdId = <span style="color: #0000ff;"&gt;string</span><span style="color: #000000;"&gt;.Empty; ManagementClass hardDisk </span>= <span style="color: #0000ff;"&gt;new</span><span style="color: #000000;"&gt; ManagementClass(WindowsAPIType.win32_DiskDrive.ToString()); ManagementObjectCollection hardDiskC </span>=<span style="color: #000000;"&gt; hardDisk.GetInstances(); </span><span style="color: #0000ff;"&gt;foreach</span> (ManagementObject m <span style="color: #0000ff;"&gt;in</span><span style="color: #000000;"&gt; hardDiskC) { </span><span style="color: #0000ff;"&gt;long</span> capacity =<span style="color: #000000;"&gt; Convert.ToInt64(m[WindowsAPIKeys.Size.ToString()].ToString()); sb.Append(CommonUtlity.ToGB(capacity,</span><span style="color: #800080;"&gt;1000.0</span>) + <span style="color: #800000;"&gt;"</span><span style="color: #800000;"&gt;+</span><span style="color: #800000;"&gt;"</span><span style="color: #000000;"&gt;); } result </span>= sb.ToString().TrimEnd(<span style="color: #800000;"&gt;'</span><span style="color: #800000;"&gt;+</span><span style="color: #800000;"&gt;'</span><span style="color: #000000;"&gt;); } </span><span style="color: #0000ff;"&gt;catch</span><span style="color: #000000;"&gt; { } </span><span style="color: #0000ff;"&gt;return</span><span style="color: #000000;"&gt; result; } </span><span style="color: #808080;"&gt;///</span> <span style="color: #808080;"&gt;<summary></span> <span style="color: #808080;"&gt;///</span><span style="color: #008000;"&gt; 电脑型号 </span><span style="color: #808080;"&gt;///</span> <span style="color: #808080;"&gt;</summary></span> <span style="color: #0000ff;"&gt;public</span> <span style="color: #0000ff;"&gt;string</span><span style="color: #000000;"&gt; GetVersion() { </span><span style="color: #0000ff;"&gt;string</span> str = <span style="color: #800000;"&gt;"</span><span style="color: #800000;"&gt;查询失败</span><span style="color: #800000;"&gt;"</span><span style="color: #000000;"&gt;; </span><span style="color: #0000ff;"&gt;try</span><span style="color: #000000;"&gt; { </span><span style="color: #0000ff;"&gt;string</span> hdId = <span style="color: #0000ff;"&gt;string</span><span style="color: #000000;"&gt;.Empty; ManagementClass hardDisk </span>= <span style="color: #0000ff;"&gt;new</span><span style="color: #000000;"&gt; ManagementClass(WindowsAPIType.Win32_ComputerSystemProduct.ToString()); ManagementObjectCollection hardDiskC </span>=<span style="color: #000000;"&gt; hardDisk.GetInstances(); </span><span style="color: #0000ff;"&gt;foreach</span> (ManagementObject m <span style="color: #0000ff;"&gt;in</span><span style="color: #000000;"&gt; hardDiskC) { str </span>=<span style="color: #000000;"&gt; m[WindowsAPIKeys.Version.ToString()].ToString(); </span><span style="color: #0000ff;"&gt;break</span><span style="color: #000000;"&gt;; } } </span><span style="color: #0000ff;"&gt;catch</span><span style="color: #000000;"&gt; { } </span><span style="color: #0000ff;"&gt;return</span><span style="color: #000000;"&gt; str; } </span><span style="color: #808080;"&gt;///</span> <span style="color: #808080;"&gt;<summary></span> <span style="color: #808080;"&gt;///</span><span style="color: #008000;"&gt; 获取分辨率 </span><span style="color: #808080;"&gt;///</span> <span style="color: #808080;"&gt;</summary></span> <span style="color: #0000ff;"&gt;public</span> <span style="color: #0000ff;"&gt;string</span><span style="color: #000000;"&gt; GetFenbianlv() { </span><span style="color: #0000ff;"&gt;string</span> result = <span style="color: #800000;"&gt;"</span><span style="color: #800000;"&gt;1920*1080</span><span style="color: #800000;"&gt;"</span><span style="color: #000000;"&gt;; </span><span style="color: #0000ff;"&gt;try</span><span style="color: #000000;"&gt; { </span><span style="color: #0000ff;"&gt;string</span> hdId = <span style="color: #0000ff;"&gt;string</span><span style="color: #000000;"&gt;.Empty; ManagementClass hardDisk </span>= <span style="color: #0000ff;"&gt;new</span><span style="color: #000000;"&gt; ManagementClass(WindowsAPIType.Win32_DesktopMonitor.ToString()); ManagementObjectCollection hardDiskC </span>=<span style="color: #000000;"&gt; hardDisk.GetInstances(); </span><span style="color: #0000ff;"&gt;foreach</span> (ManagementObject m <span style="color: #0000ff;"&gt;in</span><span style="color: #000000;"&gt; hardDiskC) { result </span>= m[WindowsAPIKeys.ScreenWidth.ToString()].ToString() + <span style="color: #800000;"&gt;"</span><span style="color: #800000;"&gt;*</span><span style="color: #800000;"&gt;"</span> +<span style="color: #000000;"&gt; <br>m[WindowsAPIKeys.ScreenHeight.ToString()].ToString(); </span><span style="color: #0000ff;"&gt;break</span><span style="color: #000000;"&gt;; } } </span><span style="color: #0000ff;"&gt;catch</span><span style="color: #000000;"&gt; { } </span><span style="color: #0000ff;"&gt;return</span><span style="color: #000000;"&gt; result; } </span><span style="color: #808080;"&gt;///</span> <span style="color: #808080;"&gt;<summary></span> <span style="color: #808080;"&gt;///</span><span style="color: #008000;"&gt; 显卡 芯片,显存大小 </span><span style="color: #808080;"&gt;///</span> <span style="color: #808080;"&gt;</summary></span> <span style="color: #0000ff;"&gt;public</span> Tuple<<span style="color: #0000ff;"&gt;string</span>,<span style="color: #0000ff;"&gt;string</span>><span style="color: #000000;"&gt; GetVideoController() { Tuple</span><<span style="color: #0000ff;"&gt;string</span>,<span style="color: #0000ff;"&gt;string</span>> result = <span style="color: #0000ff;"&gt;null</span><span style="color: #000000;"&gt;; </span><span style="color: #0000ff;"&gt;try</span><span style="color: #000000;"&gt; { ManagementClass hardDisk </span>= <span style="color: #0000ff;"&gt;new</span><span style="color: #000000;"&gt; ManagementClass(WindowsAPIType.Win32_VideoController.ToString()); ManagementObjectCollection hardDiskC </span>=<span style="color: #000000;"&gt; hardDisk.GetInstances(); </span><span style="color: #0000ff;"&gt;foreach</span> (ManagementObject m <span style="color: #0000ff;"&gt;in</span><span style="color: #000000;"&gt; hardDiskC) { result </span>= <span style="color: #0000ff;"&gt;new</span> Tuple<<span style="color: #0000ff;"&gt;string</span>,<span style="color: #0000ff;"&gt;string</span>>(m[WindowsAPIKeys.VideoProcessor.ToString()].ToString()<br>.Replace(<span style="color: #800000;"&gt;"</span><span style="color: #800000;"&gt;Family</span><span style="color: #800000;"&gt;"</span>,<span style="color: #800000;"&gt;""</span>),CommonUtlity.ToGB(Convert.ToInt64(m[WindowsAPIKeys.AdapterRAM.ToString()].ToString()),<span style="color: #800080;"&gt;1024.0</span><span style="color: #000000;"&gt;)); </span><span style="color: #0000ff;"&gt;break</span><span style="color: #000000;"&gt;; } } </span><span style="color: #0000ff;"&gt;catch</span><span style="color: #000000;"&gt; { } </span><span style="color: #0000ff;"&gt;return</span><span style="color: #000000;"&gt; result; } </span><span style="color: #808080;"&gt;///</span> <span style="color: #808080;"&gt;<summary></span> <span style="color: #808080;"&gt;///</span><span style="color: #008000;"&gt; 操作系统版本 </span><span style="color: #808080;"&gt;///</span> <span style="color: #808080;"&gt;</summary></span> <span style="color: #0000ff;"&gt;public</span> <span style="color: #0000ff;"&gt;string</span><span style="color: #000000;"&gt; GetOS_Version() { </span><span style="color: #0000ff;"&gt;string</span> str = <span style="color: #800000;"&gt;"</span><span style="color: #800000;"&gt;Windows 10</span><span style="color: #800000;"&gt;"</span><span style="color: #000000;"&gt;; </span><span style="color: #0000ff;"&gt;try</span><span style="color: #000000;"&gt; { </span><span style="color: #0000ff;"&gt;string</span> hdId = <span style="color: #0000ff;"&gt;string</span><span style="color: #000000;"&gt;.Empty; ManagementClass hardDisk </span>= <span style="color: #0000ff;"&gt;new</span><span style="color: #000000;"&gt; ManagementClass(WindowsAPIType.Win32_OperatingSystem.ToString()); ManagementObjectCollection hardDiskC </span>=<span style="color: #000000;"&gt; hardDisk.GetInstances(); </span><span style="color: #0000ff;"&gt;foreach</span> (ManagementObject m <span style="color: #0000ff;"&gt;in</span><span style="color: #000000;"&gt; hardDiskC) { str </span>= m[WindowsAPIKeys.Name.ToString()].ToString().Split(<span style="color: #800000;"&gt;'</span><span style="color: #800000;"&gt;|</span><span style="color: #800000;"&gt;'</span>)[<span style="color: #800080;"&gt;0</span>].Replace(<span style="color: #800000;"&gt;"</span><span style="color: #800000;"&gt;Microsoft</span><span style="color: #800000;"&gt;"</span>,<span style="color: #800000;"&gt;""</span><span style="color: #000000;"&gt;); </span><span style="color: #0000ff;"&gt;break</span><span style="color: #000000;"&gt;; } } </span><span style="color: #0000ff;"&gt;catch</span><span style="color: #000000;"&gt; { } </span><span style="color: #0000ff;"&gt;return</span><span style="color: #000000;"&gt; str; } }</span></pre>

这里只是枚举了部分api,有兴趣的可以查看其它的windows api 并通过power shell查看,然后转化为c# 代码即可。

这里需要注意,硬盘容量在转化的时候需要除以1000,而不是1024.但内存是需要除以1024的,这点需要注意。

转化方法:

ToGB( size,= String[] { ,,,,, i = (size >=/=++ Math.Round(size) +

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读