Visual C#中用WMI控制遠端電腦

來源:互聯網
上載者:User
WMI不僅可以擷取想要的電腦資料,而且還可以用以遠端控制。遠端控制電腦不僅是駭客們的夢想,也是大多數網路管理者所渴望得到的,尤其在現代的網路中,每一個網路管理者所面對的區域網路,都是由一個龐大的電腦群組成,如果有效管理網路的每一台電腦就顯得格外重要了。目前網路管理軟體通常的做法是,在遠端電腦上運行用戶端背景程式,在本機電腦上運行一個伺服器端前台控製程序,通過這二個程式直接的通訊實現對電腦的遠端控制。這種作法的缺點是十分明顯的,當用戶端關閉了背景程式,這種遠端管理就無法實現了,所以為了克服這個缺點,遠端控制軟體的用戶端程式就做的非常隱蔽,使使用者在不知覺中運行程式。

  其實做遠端控制軟體,WMI是一個很好的選擇,尤其是在目前,Windows 2000已經成為了主流的作業系統,利用WMI編寫遠端控制軟體可以省略了已往遠端控制軟體最頭痛的一個環節--分發用戶端程式。

  著作權聲明:任何獲得天極網授權的網站,轉載時請務必保留作者資訊和以下連結
  天極開發C#專欄:http://dev.yesky.com/msdn/msdnc/
 
  本節中介紹的遠端控制程式,能夠讓使用者重啟和關閉遠端電腦。其所使用的就是WMI,下面是Visual C#中利用WMI控制遠端電腦具體實現步驟。

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

  2. 重新執行一下實現【擷取遠端電腦硬碟資訊】項目中的第二至第四步驟。

  3. 把Visual Studio .Net當前視窗切換到【Form1.cs(設計)】視窗,並從【工具箱】中的【Windows表單組件】選項卡中往表單中拖入下列組件,並執行相應操作:

  三個TextBox組件,用以輸入遠端電腦名稱(或IP地址)、遠端電腦WMI操作使用者名稱和口令。

  一個ComboBox組件,用以選擇對遠端電腦執行的操作類型。

  四個Label組件。

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

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

組件類型 組件名稱 屬性 設定結果
Form Form1 Text 利用WMI控制遠端電腦
Form1 FormBorderStyle FixedSingle
Form1 MaximizeBox False
Label label1 Text 機器名稱或IP地址:
label2 Text 具有WMI許可權的超級使用者名稱:
label3 Text 口令:
label4 Text 選擇控制類型:
TextBox textBox1 Text ""
textBox2 Text ""
textBox3 PasswordChar *
textBox3 Text ""
Button button1 Text 執行
button1 FlatStyle Flat

      表06:【利用WMI控制遠端電腦】項目表單中各組件的主要屬性設定數值表

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


圖09:【利用WMI控制遠端電腦】的設計介面

  5. 把Visual Studio .Net的當前視窗切換到Form1.cs檔案的編輯視窗,並用下列代碼替換Form1.cs中的button1的Click事件對應的處理代碼。下列代碼的作用是對根據使用者的選擇對遠端電腦進行進行相應的遠端控制:

private void button1_Click ( object sender , System.EventArgs e )
{
 //確定WMI操作的範圍
 ConnectionOptions options = new ConnectionOptions ( ) ;
 //設定用於WMI串連操作的使用者名稱
 options.Username = textBox2.Text ;
 //設定使用者的口令
 options.Password = textBox3.Text ;
 try
 {
  ManagementScope Conn = new ManagementScope( "////" + textBox1.Text + "//root//cimv2", options ) ;
  Conn.Connect();
  //確定WMI操作的內容
  ObjectQuery oq = new ObjectQuery ( "SELECT * FROM Win32_OperatingSystem" ) ;
  ManagementObjectSearcher query1 = new ManagementObjectSearcher ( Conn , oq ) ;
  //擷取WMI操作內容
  ManagementObjectCollection queryCollection1 = query1.Get ( ) ;
  //根據使用者選擇,執行相應的遠程操作
  foreach ( ManagementObject mo in queryCollection1 )
  {
   string [ ] ss= { "" } ;
   //執行重啟操作
   if (comboBox1.Text =="重新啟動")
   {
    mo.InvokeMethod ( "Reboot" , ss ) ;
   } else
    //執行遠程關機
    if ( comboBox1.Text =="遠程關機")
    {
     mo.InvokeMethod ( "Shutdown" , ss ) ;
    }else
     MessageBox.Show ("選擇不正確的操作!","錯誤!");
   }
  }
  //報錯
  catch ( Exception ee )
  {
   MessageBox.Show ( "串連" + textBox1.Text + "出錯,出錯資訊為:" + ee.Message ) ;
  } 
}

  6. 至此,在上述步驟都正確完成,並全部儲存後,【利用WMI控制遠端電腦】下面的全部工作就完成了。此時單擊【F5】快速鍵,就可以運行程式了。在程式的【電腦名稱或IP地址】文字框中輸入要控制的遠端電腦名稱或IP地址,在【具有WMI許可權的使用者名稱】和【口令】文字框中輸入具有WMI操作的帳戶和口令,在【選擇控制類型】組合框中選擇對遠端電腦的控制類型後,單擊【執行】按鈕,則程式就能夠對指定的遠端電腦進行相應的控制了。圖10是【利用WMI控制遠端電腦】的運行介面。


圖10:【利用WMI控制遠端電腦】的運行介面

  總結:

  通過以上樣本,可見WMI的確是一個非常有用的東西,但由於它還比較新,國內甚至國外還沒有完整的介紹資料,因此只是簡要的瀏覽了一下WMI的應用,希望本文的內容能夠對大家瞭解、掌握使用Visual C#調用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.