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;">return</span><span style="color: #000000;"> 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;">catch</span><span style="color: #000000;">
{
}
</span><span style="color: #0000ff;">return</span><span style="color: #000000;"> result;
}
</span><span style="color: #808080;">///</span> <span style="color: #808080;"><summary></span>
<span style="color: #808080;">///</span><span style="color: #008000;"> 获取cpu核心数
</span><span style="color: #808080;">///</span> <span style="color: #808080;"></summary></span>
<span style="color: #808080;">///</span> <span style="color: #808080;"><returns></returns></span>
<span style="color: #0000ff;">public</span> <span style="color: #0000ff;">string</span><span style="color: #000000;"> GetCPU_Count()
{
</span><span style="color: #0000ff;">string</span> str = <span style="color: #800000;">"</span><span style="color: #800000;">查询失败</span><span style="color: #800000;">"</span><span style="color: #000000;">;
</span><span style="color: #0000ff;">try</span><span style="color: #000000;">
{
</span><span style="color: #0000ff;">int</span> coreCount = <span style="color: #800080;">0</span><span style="color: #000000;">;
</span><span style="color: #0000ff;">foreach</span> (<span style="color: #0000ff;">var</span> item <span style="color: #0000ff;">in</span> <span style="color: #0000ff;">new</span> System.Management.ManagementObjectSearcher(<span style="color: #800000;">"</span><span style="color: #800000;">Select * from </span><span style="color: #800000;">"</span> +<br><span style="color: #000000;"> WindowsAPIType.Win32_Processor.ToString()).Get())
{
coreCount </span>+= <span style="color: #0000ff;">int</span><span style="color: #000000;">.Parse(item[WindowsAPIKeys.NumberOfCores.ToString()].ToString());
}
</span><span style="color: #0000ff;">if</span> (coreCount == <span style="color: #800080;">2</span><span style="color: #000000;">)
{
</span><span style="color: #0000ff;">return</span> <span style="color: #800000;">"</span><span style="color: #800000;">双核</span><span style="color: #800000;">"</span><span style="color: #000000;">;
}
str </span>= coreCount.ToString() + <span style="color: #800000;">"</span><span style="color: #800000;">核</span><span style="color: #800000;">"</span><span style="color: #000000;">;
}
</span><span style="color: #0000ff;">catch</span><span style="color: #000000;">
{
}
</span><span style="color: #0000ff;">return</span><span style="color: #000000;"> str;
}
</span><span style="color: #808080;">///</span> <span style="color: #808080;"><summary></span>
<span style="color: #808080;">///</span><span style="color: #008000;"> 获取系统内存大小
</span><span style="color: #808080;">///</span> <span style="color: #808080;"></summary></span>
<span style="color: #808080;">///</span> <span style="color: #808080;"><returns></span><span style="color: #008000;">内存大小(单位M)</span><span style="color: #808080;"></returns></span>
<span style="color: #0000ff;">public</span> <span style="color: #0000ff;">string</span><span style="color: #000000;"> GetPhisicalMemory()
{
ManagementObjectSearcher searcher </span>= <span style="color: #0000ff;">new</span> ManagementObjectSearcher(); <span style="color: #008000;">//</span><span style="color: #008000;">用于查询一些如系统信息的管理对象 </span>
searcher.Query = <span style="color: #0000ff;">new</span> SelectQuery(WindowsAPIType.Win32_PhysicalMemory.ToString(),<span style="color: #800000;">""</span>,<br><span style="color: #0000ff;">new</span> <span style="color: #0000ff;">string</span>[] { WindowsAPIKeys.Capacity.ToString() });<span style="color: #008000;">//</span><span style="color: #008000;">设置查询条件 </span>
ManagementObjectCollection collection = searcher.Get(); <span style="color: #008000;">//</span><span style="color: #008000;">获取内存容量 </span>
ManagementObjectCollection.ManagementObjectEnumerator em =<span style="color: #000000;"> collection.GetEnumerator();
</span><span style="color: #0000ff;">long</span> capacity = <span style="color: #800080;">0</span><span style="color: #000000;">;
</span><span style="color: #0000ff;">while</span><span style="color: #000000;"> (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;"> em.Current;
</span><span style="color: #0000ff;">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;">null</span><span style="color: #000000;">)
{
</span><span style="color: #0000ff;">try</span><span style="color: #000000;">
{
capacity </span>+= <span style="color: #0000ff;">long</span><span style="color: #000000;">.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;">catch</span><span style="color: #000000;">
{
</span><span style="color: #0000ff;">return</span> <span style="color: #800000;">"</span><span style="color: #800000;">查询失败</span><span style="color: #800000;">"</span><span style="color: #000000;">;
}
}
}
</span><span style="color: #0000ff;">return</span> CommonUtlity.ToGB((<span style="color: #0000ff;">double</span>)capacity,<span style="color: #800080;">1024.0</span><span style="color: #000000;">);
}
</span><span style="color: #808080;">///</span> <span style="color: #808080;"><summary></span>
<span style="color: #808080;">///</span><span style="color: #008000;"> 获取硬盘容量
</span><span style="color: #808080;">///</span> <span style="color: #808080;"></summary></span>
<span style="color: #0000ff;">public</span> <span style="color: #0000ff;">string</span><span style="color: #000000;"> GetDiskSize()
{
</span><span style="color: #0000ff;">string</span> result = <span style="color: #0000ff;">string</span><span style="color: #000000;">.Empty;
StringBuilder sb </span>= <span style="color: #0000ff;">new</span><span style="color: #000000;"> StringBuilder();
</span><span style="color: #0000ff;">try</span><span style="color: #000000;">
{
</span><span style="color: #0000ff;">string</span> hdId = <span style="color: #0000ff;">string</span><span style="color: #000000;">.Empty;
ManagementClass hardDisk </span>= <span style="color: #0000ff;">new</span><span style="color: #000000;"> ManagementClass(WindowsAPIType.win32_DiskDrive.ToString());
ManagementObjectCollection hardDiskC </span>=<span style="color: #000000;"> hardDisk.GetInstances();
</span><span style="color: #0000ff;">foreach</span> (ManagementObject m <span style="color: #0000ff;">in</span><span style="color: #000000;"> hardDiskC)
{
</span><span style="color: #0000ff;">long</span> capacity =<span style="color: #000000;"> Convert.ToInt64(m[WindowsAPIKeys.Size.ToString()].ToString());
sb.Append(CommonUtlity.ToGB(capacity,</span><span style="color: #800080;">1000.0</span>) + <span style="color: #800000;">"</span><span style="color: #800000;">+</span><span style="color: #800000;">"</span><span style="color: #000000;">);
}
result </span>= sb.ToString().TrimEnd(<span style="color: #800000;">'</span><span style="color: #800000;">+</span><span style="color: #800000;">'</span><span style="color: #000000;">);
}
</span><span style="color: #0000ff;">catch</span><span style="color: #000000;">
{
}
</span><span style="color: #0000ff;">return</span><span style="color: #000000;"> result;
}
</span><span style="color: #808080;">///</span> <span style="color: #808080;"><summary></span>
<span style="color: #808080;">///</span><span style="color: #008000;"> 电脑型号
</span><span style="color: #808080;">///</span> <span style="color: #808080;"></summary></span>
<span style="color: #0000ff;">public</span> <span style="color: #0000ff;">string</span><span style="color: #000000;"> GetVersion()
{
</span><span style="color: #0000ff;">string</span> str = <span style="color: #800000;">"</span><span style="color: #800000;">查询失败</span><span style="color: #800000;">"</span><span style="color: #000000;">;
</span><span style="color: #0000ff;">try</span><span style="color: #000000;">
{
</span><span style="color: #0000ff;">string</span> hdId = <span style="color: #0000ff;">string</span><span style="color: #000000;">.Empty;
ManagementClass hardDisk </span>= <span style="color: #0000ff;">new</span><span style="color: #000000;"> ManagementClass(WindowsAPIType.Win32_ComputerSystemProduct.ToString());
ManagementObjectCollection hardDiskC </span>=<span style="color: #000000;"> hardDisk.GetInstances();
</span><span style="color: #0000ff;">foreach</span> (ManagementObject m <span style="color: #0000ff;">in</span><span style="color: #000000;"> hardDiskC)
{
str </span>=<span style="color: #000000;"> m[WindowsAPIKeys.Version.ToString()].ToString(); </span><span style="color: #0000ff;">break</span><span style="color: #000000;">;
}
}
</span><span style="color: #0000ff;">catch</span><span style="color: #000000;">
{
}
</span><span style="color: #0000ff;">return</span><span style="color: #000000;"> str;
}
</span><span style="color: #808080;">///</span> <span style="color: #808080;"><summary></span>
<span style="color: #808080;">///</span><span style="color: #008000;"> 获取分辨率
</span><span style="color: #808080;">///</span> <span style="color: #808080;"></summary></span>
<span style="color: #0000ff;">public</span> <span style="color: #0000ff;">string</span><span style="color: #000000;"> GetFenbianlv()
{
</span><span style="color: #0000ff;">string</span> result = <span style="color: #800000;">"</span><span style="color: #800000;">1920*1080</span><span style="color: #800000;">"</span><span style="color: #000000;">;
</span><span style="color: #0000ff;">try</span><span style="color: #000000;">
{
</span><span style="color: #0000ff;">string</span> hdId = <span style="color: #0000ff;">string</span><span style="color: #000000;">.Empty;
ManagementClass hardDisk </span>= <span style="color: #0000ff;">new</span><span style="color: #000000;"> ManagementClass(WindowsAPIType.Win32_DesktopMonitor.ToString());
ManagementObjectCollection hardDiskC </span>=<span style="color: #000000;"> hardDisk.GetInstances();
</span><span style="color: #0000ff;">foreach</span> (ManagementObject m <span style="color: #0000ff;">in</span><span style="color: #000000;"> hardDiskC)
{
result </span>= m[WindowsAPIKeys.ScreenWidth.ToString()].ToString() + <span style="color: #800000;">"</span><span style="color: #800000;">*</span><span style="color: #800000;">"</span> +<span style="color: #000000;"> <br>m[WindowsAPIKeys.ScreenHeight.ToString()].ToString();
</span><span style="color: #0000ff;">break</span><span style="color: #000000;">;
}
}
</span><span style="color: #0000ff;">catch</span><span style="color: #000000;">
{
}
</span><span style="color: #0000ff;">return</span><span style="color: #000000;"> result;
}
</span><span style="color: #808080;">///</span> <span style="color: #808080;"><summary></span>
<span style="color: #808080;">///</span><span style="color: #008000;"> 显卡 芯片,显存大小
</span><span style="color: #808080;">///</span> <span style="color: #808080;"></summary></span>
<span style="color: #0000ff;">public</span> Tuple<<span style="color: #0000ff;">string</span>,<span style="color: #0000ff;">string</span>><span style="color: #000000;"> GetVideoController()
{
Tuple</span><<span style="color: #0000ff;">string</span>,<span style="color: #0000ff;">string</span>> result = <span style="color: #0000ff;">null</span><span style="color: #000000;">;
</span><span style="color: #0000ff;">try</span><span style="color: #000000;">
{
ManagementClass hardDisk </span>= <span style="color: #0000ff;">new</span><span style="color: #000000;"> ManagementClass(WindowsAPIType.Win32_VideoController.ToString());
ManagementObjectCollection hardDiskC </span>=<span style="color: #000000;"> hardDisk.GetInstances();
</span><span style="color: #0000ff;">foreach</span> (ManagementObject m <span style="color: #0000ff;">in</span><span style="color: #000000;"> hardDiskC)
{
result </span>= <span style="color: #0000ff;">new</span> Tuple<<span style="color: #0000ff;">string</span>,<span style="color: #0000ff;">string</span>>(m[WindowsAPIKeys.VideoProcessor.ToString()].ToString()<br>.Replace(<span style="color: #800000;">"</span><span style="color: #800000;">Family</span><span style="color: #800000;">"</span>,<span style="color: #800000;">""</span>),CommonUtlity.ToGB(Convert.ToInt64(m[WindowsAPIKeys.AdapterRAM.ToString()].ToString()),<span style="color: #800080;">1024.0</span><span style="color: #000000;">));
</span><span style="color: #0000ff;">break</span><span style="color: #000000;">;
}
}
</span><span style="color: #0000ff;">catch</span><span style="color: #000000;">
{
}
</span><span style="color: #0000ff;">return</span><span style="color: #000000;"> result;
}
</span><span style="color: #808080;">///</span> <span style="color: #808080;"><summary></span>
<span style="color: #808080;">///</span><span style="color: #008000;"> 操作系统版本
</span><span style="color: #808080;">///</span> <span style="color: #808080;"></summary></span>
<span style="color: #0000ff;">public</span> <span style="color: #0000ff;">string</span><span style="color: #000000;"> GetOS_Version()
{
</span><span style="color: #0000ff;">string</span> str = <span style="color: #800000;">"</span><span style="color: #800000;">Windows 10</span><span style="color: #800000;">"</span><span style="color: #000000;">;
</span><span style="color: #0000ff;">try</span><span style="color: #000000;">
{
</span><span style="color: #0000ff;">string</span> hdId = <span style="color: #0000ff;">string</span><span style="color: #000000;">.Empty;
ManagementClass hardDisk </span>= <span style="color: #0000ff;">new</span><span style="color: #000000;"> ManagementClass(WindowsAPIType.Win32_OperatingSystem.ToString());
ManagementObjectCollection hardDiskC </span>=<span style="color: #000000;"> hardDisk.GetInstances();
</span><span style="color: #0000ff;">foreach</span> (ManagementObject m <span style="color: #0000ff;">in</span><span style="color: #000000;"> hardDiskC)
{
str </span>= m[WindowsAPIKeys.Name.ToString()].ToString().Split(<span style="color: #800000;">'</span><span style="color: #800000;">|</span><span style="color: #800000;">'</span>)[<span style="color: #800080;">0</span>].Replace(<span style="color: #800000;">"</span><span style="color: #800000;">Microsoft</span><span style="color: #800000;">"</span>,<span style="color: #800000;">""</span><span style="color: #000000;">);
</span><span style="color: #0000ff;">break</span><span style="color: #000000;">;
}
}
</span><span style="color: #0000ff;">catch</span><span style="color: #000000;">
{
}
</span><span style="color: #0000ff;">return</span><span style="color: #000000;"> str;
}
}</span></pre>
这里只是枚举了部分api,有兴趣的可以查看其它的windows api 并通过power shell查看,然后转化为c# 代码即可。 这里需要注意,硬盘容量在转化的时候需要除以1000,而不是1024.但内存是需要除以1024的,这点需要注意。 转化方法:
ToGB( size,= String[] { ,,,,, i = (size >=/=++ Math.Round(size) +
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |