自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

C#獲取邏輯硬盤更多信息方法談

開發(fā) 后端
若僅簡單實現(xiàn)C#獲取邏輯驅(qū)動器的名稱列表我們使用.Net框架的Environment.GetLogicalDrives即可,但是若想獲得更多關(guān)于磁盤驅(qū)動器的信息我們可以使用.Net框架下的System.Management命名空間。

C#獲取更多邏輯硬盤信息的過程,主要是利用Visual Studio 2005建立一個WinForm工程,并拖放相關(guān)控件。

1、概述

若僅簡單實現(xiàn)C#獲取邏輯驅(qū)動器的名稱列表我們使用.NET框架的Environment.GetLogicalDrives即可,但是若想獲得更多關(guān)于磁盤驅(qū)動器的信息我們可以使用.NET框架下的System.Management命名空間所提供的類和委托等對大量管理信息和管理事件的集合進(jìn)行訪問(見http://www.iwebtrados.com.cn/post/111.html),這些信息和事件都與WMI有關(guān),該命名空間下的類實際上也是對WMI的一種封裝,應(yīng)用程序和服務(wù)可以使用從ManagementObjectSearcher和ManagementQuery派生的類,查詢感興趣的管理信息,例如在磁盤上還剩多少可用空間、當(dāng)前CPU利用率是多少、某一應(yīng)用程序正連接到哪一數(shù)據(jù)庫等等。下面,我將詳細(xì)闡述如何利用WMI獲取邏輯硬盤詳細(xì)信息。

2、C#獲取更多邏輯硬盤信息實現(xiàn)過程

(1)首先用Visual Studio 2005新建一個C#的Winform工程,在form1窗體上拖放一個listview控件以及一個button控件,都采用默認(rèn)命名,設(shè)置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表示設(shè)備的名稱  
  12. //各屬性的標(biāo)識見聯(lián)機(jī)的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("未知設(shè)備");  
  21. break;  
  22. case"1":  
  23. item.SubItems.Add("未分區(qū)");  
  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("網(wǎng)絡(luò)驅(qū)動器");  
  33. break;  
  34. case"5":  
  35. item.SubItems.Add("光驅(qū)");  
  36. break;  
  37. case"6":  
  38. item.SubItems.Add("內(nèi)存磁盤");  
  39. break;  
  40. }  
  41. }  
  42. catch 
  43. {  
  44. item.SubItems.Add("設(shè)備未準(zhǔn)備好");  
  45. }  
  46. try 
  47. {  
  48. item.SubItems.Add(GetSizeUseUnit(disk["Size"].ToString()));  
  49. //未用GetSizeUseUnit函數(shù)處理的Size屬性以字節(jié)為單位  
  50. }  
  51. catch 
  52. {  
  53. }  
  54. try//可移動設(shè)備如光驅(qū)在未插入光盤時處于不可用狀態(tài),需要捕捉異常。  
  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. //處理大小的函數(shù) 

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]+"字節(jié)";  
  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#獲取更多邏輯硬盤信息運(yùn)行效果

這樣我們通過托管版本的WMI就輕松獲得邏輯磁盤的相關(guān)信息。除了邏輯磁盤,我們通過WMI還可輕松獲得CPU,網(wǎng)卡等設(shè)備的信息。本代碼在WindowsXP SP2+Visual Studio 2005下編譯和調(diào)試通過。

本文來自網(wǎng)絡(luò)小筑博客園文章《c#獲取邏輯硬盤信息

【編輯推薦】

  1. C#編寫數(shù)字轉(zhuǎn)換中文算法
  2. 分析C#調(diào)用COM對象
  3. C# SingleInstance類淺析
  4. 概述C#調(diào)用Active組件
  5. C# Convert.ToInt32簡介
責(zé)任編輯:彭凡 來源: 博客園
相關(guān)推薦

2009-08-25 11:13:28

C#獲取邏輯硬盤信息

2009-09-08 16:22:27

c# listBox

2009-08-17 15:52:42

C#多態(tài)

2009-09-08 15:28:24

C#委托

2009-08-21 17:24:18

C#控制攝像頭

2009-08-17 17:40:53

C# GetAllCu

2009-08-26 09:50:08

C# GreetPeo

2009-08-26 17:16:22

C# CheckSta

2009-08-25 16:24:44

C#信息架構(gòu)視圖

2009-08-31 16:01:28

C#水晶報表數(shù)據(jù)獲取方

2024-09-23 12:10:00

C#MAC代碼

2009-08-12 14:23:09

C#邏輯運(yùn)算符

2011-06-09 09:08:00

C#循環(huán)結(jié)構(gòu)

2009-08-07 17:38:08

C#無詞尾符號

2009-08-31 18:05:14

C#調(diào)用WalkTre

2009-08-25 17:07:27

C#虛擬方法

2009-09-07 10:37:32

C#執(zhí)行Finaliz

2009-08-19 14:42:21

C#重載LoadPos

2009-08-25 16:16:43

C# oledbcon

2009-08-31 16:33:28

C#調(diào)用Dispose
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號