Visual C#中用WMI擷取遠端電腦資訊

來源:互聯網
上載者:User
visual 如果不使用WMI,想要擷取遠端電腦的系統資料,最常用的方法就是在遠端電腦上運行一個用戶端程式,本地機通過和這個用戶端程式來擷取遠端電腦的系統資料。這種實現方法無論是程式設計還是後面的程式分發都是及其困難的。而使用WMI,一切就顯得非常簡單。下面介紹的這個樣本,其功能是利用WMI擷取遠端電腦硬碟資料。各位只需對這個程式稍加修改,就可以獲得遠端電腦的其他資料。下面是具體的實現步驟:

  著作權聲明:任何獲得天極網授權的網站,轉載時請務必保留作者資訊和以下連結
  天極開發ASP.NET專欄: http://dev.yesky.com/msdn/msdnc

  1. 首先啟動Visual Studio .Net,依次選擇"檔案"、"建立"、"項目"菜單後,在彈出"建立項目"對話方塊中將"項目類型"設定為"Visual C#項目",將"模板"設定為"Windows應用程式",在"名稱"文字框中輸入"獲得遠端電腦硬碟資訊",在"位置"的文字框中輸入"E:\VS.NET項目",然後單擊"確定"按鈕。這樣在"E:\VS.NET項目"目錄中就建立了一個新的檔案夾"獲得遠端電腦硬碟資訊",裡面存放的就是"獲得遠端電腦硬碟資訊"的專案檔。

  2. 由於Visual Studio .Net預設的編譯環境中並沒有包括命名空間"System.Management"所位於的檔案"System.Management.dll",所以首先要在專案檔中引入此DLL檔案。具體的步驟如下:

  選中【方案總管】中的【引用】,單擊滑鼠右鍵,在彈出的菜單中,選擇【添加引用】,具體如圖05所示:


圖05:添加引用
  在彈出【添加引用】對話方塊中,選擇【.Net】頁面,在【組件名稱】欄中選擇【System.Managemen】後,單擊【選擇】按鈕,此時在【選定的組件】欄中就加入了【System.Managemen】,然後單擊【確定】按鈕,則在Visual Studio .Net整合式開發環境中就引入命名空間"System.Managemen"。具體如圖06所示:


圖06:添加引用
  3. 在【方案總管】視窗中,雙擊Form1.cs檔案,進入Form1.cs檔案的編輯介面。

  4. 在Form1.cs檔案的開頭,用下列匯入命名空間代碼替代系統預設的匯入命名空間代碼。

using System ;
using System.Drawing ;
using System.Collections ;
using System.ComponentModel ;
using System.Windows.Forms ;
using System.Data ;
using System.Management ;
//WMI操作類位於的命名空間  5. 把Visual Studio .Net當前視窗切換到【Form1.cs(設計)】視窗,並從【工具箱】中的【Windows表單組件】中往表單中拖入下列組件,並執行相應操作:

  三個TextBox組件,分別輸入遠端電腦名稱或IP地址,遠端電腦的超級使用者帳戶和口令。

  一個ListBox組件,用以顯示遠端電腦硬碟資訊。

  三個Label組件。

  一個Button組件,名稱為button1,拖入表單後,雙擊此組件,則系統會在Form1.cs中自動產生其Click事件對應的處理代碼。

  6. 按照表05中的資料調整各組件屬性對應的數值:

組件類型 組件名稱 屬性 設定結果
Form Form1 Text 擷取遠端電腦硬碟資訊
Form1 FormBorderStyle FixedSingle
Form1 MaximizeBox False
Label label1 Text 遠端電腦名或IP地址:
label2 Text 擁有WMI許可權的使用者名稱:
label3 Text 口令:
TextBox textBox1 Text ""
textBox2 Text ""
textBox3 PasswordChar *
textBox3 Text ""
Button button1 Text 獲得硬碟資訊
  button1 FlatStyle Flat
      表05:【獲得遠端電腦硬碟資訊】項目表單中各組件的主要屬性設定數值表

  並按照圖07中各組件的位置和排列順序調整表單中組件的位置和排列順序:


圖07:【獲得遠端電腦硬碟資訊】項目的設計介面
  7. 把Visual Studio .Net的當前視窗切換到Form1.cs檔案的編輯視窗,並用下列代碼替換Form1.cs中的button1的Click事件對應的處理代碼。下列代碼的作用是對遠端電腦進行WMI查詢,提起查詢得到資料,並顯示結果:

private void button1_Click ( object sender , System.EventArgs e )
{
 long mb = 1048576 ;
 //1024x1024
 //設定產生的WMI所需的所有設定
 System.Management.ConnectionOptions Conn = new ConnectionOptions ( ) ;
 //設定用於WMI串連操作的使用者名稱
 Conn.Username = textBox2.Text ;
 //設定使用者的口令
 Conn.Password = textBox3.Text ;
 //設定用於執行WMI操作的範圍
 System.Management.ManagementScope Ms = new ManagementScope ( "\\\\" + textBox1.Text + "\\root\\cimv2" , Conn ) ;
 try
 {
  //串連到實際操作的WMI範圍
  Ms.Connect ( ) ;
  //設定通過WMI要查詢的內容
  ObjectQuery Query = new ObjectQuery ( "select FreeSpace ,Size ,Name from Win32_LogicalDisk where DriveType=3" ) ;
  //WQL語句,設定的WMI查詢內容和WMI的操作範圍,檢索WMI對象集合
  ManagementObjectSearcher Searcher = new ManagementObjectSearcher ( Ms , Query ) ;
  //非同步呼叫WMI查詢
  ManagementObjectCollection ReturnCollection = Searcher.Get ( ) ;
  double free = 0 ;
  double use = 0 ;
  double total = 0 ;
  listBox1.Items.Clear ( ) ;
  //通過對產生的WMI的執行個體集合進行檢索,獲得硬碟資訊
  foreach ( ManagementObject Return in ReturnCollection )
  {
   listBox1.Items.Add ( "磁碟名稱:" + Return["Name"].ToString ( ) ) ;
   //獲得硬碟的可用空間
   free = Convert.ToInt64 ( Return["FreeSpace"] ) /mb ;
   //獲得硬碟的已用空間
   use = ( Convert.ToInt64 ( Return["Size"] ) - Convert.ToInt64 ( Return["FreeSpace"] ) ) /mb ;
   //獲得硬碟的合計空間
   total = Convert.ToInt64 ( Return["Size"] ) /mb ;
   listBox1.Items.Add ( " 總計:"+ total.ToString ( ) + "MB" ) ;
   listBox1.Items.Add ( "已用空間:"+ use.ToString ( ) + "MB" ) ;
   listBox1.Items.Add ( "可用空間:"+ free.ToString ( ) + "MB" ) ;
  }
 }
 catch ( Exception ee )
 {
  MessageBox.Show ( "串連" + textBox1.Text + "出錯,出錯資訊為:" + ee.Message ,"出現錯誤!" ) ;
 }
}
  8. 至此,在上述步驟都正確完成後,【擷取遠端電腦硬碟資訊】項目的全部工作也就完成了。此時單擊快速鍵F5運行程式。在正確輸入遠端電腦的IP地址或使用者名稱,遠端電腦超級使用者名稱和口令後,單擊【擷取硬碟資訊】按鈕,則程式會擷取的指定電腦的硬碟的資料並顯示出來,具體如圖08所示:


圖08:【獲得遠端電腦硬碟資訊】的運行介面
  怎麼樣,是否有一種做駭客的感覺。下面將介紹使用WMI完成一項更"酷"的程式。通過此程式將重啟或關閉遠端電腦。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.