C#获取逻辑硬盘更多信息方法谈

C#获取更多逻辑硬盘信息的过程,主要是利用Visual Studio 2005建立一个WinForm工程,并拖放相关控件。

十余年的兴化网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。网络营销推广的优势是能够根据用户设备显示端的尺寸不同,自动调整兴化建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。创新互联从事“兴化网站设计”,“兴化网站推广”以来,每个客户项目都认真落实执行。

1、概述

若仅简单实现C#获取逻辑驱动器的名称列表我们使用.NET框架的Environment.GetLogicalDrives即可,但是若想获得更多关于磁盘驱动器的信息我们可以使用.NET框架下的System.Management命名空间所提供的类和委托等对大量管理信息和管理事件的集合进行访问(见http://www.iwebtrados.com.cn/post/111.html),这些信息和事件都与WMI有关,该命名空间下的类实际上也是对WMI的一种封装,应用程序和服务可以使用从ManagementObjectSearcher和ManagementQuery派生的类,查询感兴趣的管理信息,例如在磁盘上还剩多少可用空间、当前CPU利用率是多少、某一应用程序正连接到哪一数据库等等。下面,我将详细阐述如何利用WMI获取逻辑硬盘详细信息。

2、C#获取更多逻辑硬盘信息实现过程

(1)首先用Visual Studio 2005新建一个C#的Winform工程,在form1窗体上拖放一个listview控件以及一个button控件,都采用默认命名,设置listview的view属性为detail,添加5个列名称分别为“名称”,“类型”,“总大小”,“可用空间”,“序列号”。

(2)引入System.Management,具体见http://www.iwebtrados.com.cn/post/102.html。

(3)在button_click事件中键入如下代码

 
 
 
  1. Code  
  2. privatevoidbutton1_Click(objectsender,EventArgse)  
  3. {  
  4. SelectQuerysq=newSelectQuery("select*fromwin32_logicaldisk");  
  5. System.Management.ManagementObjectSearchermos=newManagementObjectSearcher(sq);  
  6. //  
  7. this.listView1.Items.Clear();  
  8. foreach(System.Management.ManagementObjectdiskinmos.Get())  
  9. {  
  10. ListViewItemitem=listView1.Items.Add(disk["Name"].ToString());  
  11. //Name表示设备的名称  
  12. //各属性的标识见联机的MSDN里,Win32andCOMDevelopment下的WMI。  
  13. //如http://msdn.microsoft.com/en-us/library/aa394173(VS.85).aspx  
  14. try 
  15. {  
  16. stringstrType=disk["DriveType"].ToString();  
  17. switch(strType)//类型  
  18. {  
  19. case"0":  
  20. item.SubItems.Add("未知设备");  
  21. break;  
  22. case"1":  
  23. item.SubItems.Add("未分区");  
  24. break;  
  25. case"2":  
  26. item.SubItems.Add("可移动磁盘");  
  27. break;  
  28. case"3":  
  29. item.SubItems.Add("硬盘");  
  30. break;  
  31. case"4":  
  32. item.SubItems.Add("网络驱动器");  
  33. break;  
  34. case"5":  
  35. item.SubItems.Add("光驱");  
  36. break;  
  37. case"6":  
  38. item.SubItems.Add("内存磁盘");  
  39. break;  
  40. }  
  41. }  
  42. catch 
  43. {  
  44. item.SubItems.Add("设备未准备好");  
  45. }  
  46. try 
  47. {  
  48. item.SubItems.Add(GetSizeUseUnit(disk["Size"].ToString()));  
  49. //未用GetSizeUseUnit函数处理的Size属性以字节为单位  
  50. }  
  51. catch 
  52. {  
  53. }  
  54. try//可移动设备如光驱在未插入光盘时处于不可用状态,需要捕捉异常。  
  55. {  
  56. item.SubItems.Add(GetSizeUseUnit(disk["FreeSpace"].ToString()));  
  57. }  
  58. catch 
  59. {  
  60. }  
  61. try 
  62. {  
  63. item.SubItems.Add(disk["VolumeSerialNumber"].ToString());  
  64. }  
  65. catch 
  66. {  
  67. }  
  68. }  
  69. }  
  70.  
  71. //处理大小的函数 

Code  

 
 
 
  1. privatestringGetSizeUseUnit(stringsize)  
  2. {  
  3. doubledSpace=Convert.ToDouble(size);  
  4. stringsSpace=dSpace.ToString("N");  
  5. string[]tmp;  
  6. stringrtnSize="0";  
  7. tmp=sSpace.Split(',');  
  8. switch(tmp.GetUpperBound(0))  
  9. {  
  10. case0:  
  11. rtnSize=tmp[0]+"字节";  
  12. break;  
  13. case1:  
  14. rtnSize=tmp[0]+"."+tmp[1].Substring(0,2)+"K";  
  15. break;  
  16. case2:  
  17. rtnSize=tmp[0]+"."+tmp[1].Substring(0,2)+"M";  
  18. break;  
  19. case3:  
  20. rtnSize=tmp[0]+"."+tmp[1].Substring(0,2)+"G";  
  21. break;  
  22. case4:  
  23. rtnSize=tmp[0]+"."+tmp[1].Substring(0,2)+"T";  
  24. break;  
  25. }  
  26. returnrtnSize;  

3、C#获取更多逻辑硬盘信息运行效果

这样我们通过托管版本的WMI就轻松获得逻辑磁盘的相关信息。除了逻辑磁盘,我们通过WMI还可轻松获得CPU,网卡等设备的信息。本代码在WindowsXP SP2+Visual Studio 2005下编译和调试通过。

本文来自网络小筑的博客园文章《c#获取逻辑硬盘信息》

文章题目:C#获取逻辑硬盘更多信息方法谈
文章分享:http://www.shufengxianlan.com/qtweb/news6/33206.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联