您好,登錄后才能下訂單哦!
C#中怎么獲取邏輯硬盤信息,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
C#獲取邏輯硬盤信息——概述
若僅簡單獲取邏輯驅動器的名稱列表我們使用.Net框架的Environment.GetLogicalDrives即可,但是若想獲得更多關于磁盤驅動器的信息我們可以使用.Net框架下的System.Management 命名空間所提供的類和委托等對大量管理信息和管理事件的集合進行訪問,這些信息和事件都與 WMI有關,該命名空間下的類實際上也是對WMI的一種封裝,應用程序和服務可以使用從 ManagementObjectSearcher 和 ManagementQuery 派生的類,查詢感興趣的管理信息,例如在磁盤上還剩多少可用空間、當前 CPU 利用率是多少、某一應用程序正連接到哪一數據庫等等。下面,我將詳細闡述如何利用WMI獲取邏輯硬盤詳細信息。
C#獲取邏輯硬盤信息——實現過程
(1)首先用visual stdio 2005新建一個c#的winform工程,在form1窗體上拖放一個listview控件以及一個button控件,都采用默認命名,設置listview的view屬性為detail,添加5個列名稱分別為“名稱”,“類型”,“總大小”,“可用空間”,“序列號”。
(2)引入System.Management,具體見http://www.iwebtrados.com.cn/post/102.html。
(3)在button_click事件中鍵入如下代碼
private void button1_Click(object sender, EventArgs e) { SelectQuery sq = new SelectQuery("select * from win32_logicaldisk"); System.Management.ManagementObjectSearcher mos = new ManagementObjectSearcher(sq); // this.listView1.Items.Clear(); foreach (System.Management.ManagementObject disk in mos.Get()) { ListViewItem item= listView1.Items.Add(disk["Name"].ToString()); //Name表示設備的名稱 //各屬性的標識見聯機的MSDN里,Win32 and COM Development下的WMI。 //如http://msdn.microsoft.com/en-us/library/aa394173(VS.85).aspx try { string strType = disk["DriveType"].ToString(); switch (strType) //類型 { case "0": item.SubItems.Add("未知設備"); break; case "1": item.SubItems.Add("未分區"); break; case "2": item.SubItems.Add("可移動磁盤"); break; case "3": item.SubItems.Add("硬盤"); break; case "4": item.SubItems.Add("網絡驅動器"); break; case "5": item.SubItems.Add("光驅"); break; case "6": item.SubItems.Add("內存磁盤"); break; } } catch { item.SubItems.Add("設備未準備好"); } try { item.SubItems.Add(GetSizeUseUnit(disk["Size"].ToString())); //未用GetSizeUseUnit函數處理的Size屬性以字節為單位 } catch { } try //可移動設備如光驅在未插入光盤時處于不可用狀態,需要捕捉異常。 { item.SubItems.Add(GetSizeUseUnit(disk["FreeSpace"].ToString())); } catch { } try { item.SubItems.Add(disk["VolumeSerialNumber"].ToString()); } catch { } } }
//處理大小的函數
private string GetSizeUseUnit(string size) { double dSpace = Convert.ToDouble(size); string sSpace = dSpace.ToString("N"); string[] tmp; string rtnSize = "0"; tmp = sSpace.Split(','); switch (tmp.GetUpperBound(0)) { case 0: rtnSize = tmp[0] + " 字節"; break; case 1: rtnSize = tmp[0] + "." + tmp[1].Substring(0, 2) + " K"; break; case 2: rtnSize = tmp[0] + "." + tmp[1].Substring(0, 2) + " M"; break; case 3: rtnSize = tmp[0] + "." + tmp[1].Substring(0, 2) + " G"; break; case 4: rtnSize = tmp[0] + "." + tmp[1].Substring(0, 2) + " T"; break; } return rtnSize; }
C#獲取邏輯硬盤信息——運行效果
這樣我們通過托管版本的WMI就輕松獲得邏輯磁盤的相關信息。除了邏輯磁盤,我們通過WMI還可輕松獲得CPU,網卡等設備的信息。本代碼在Windows XP SP2 + Visual Studio 2005 下編譯和調試通過。
關于C#中怎么獲取邏輯硬盤信息問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。