组件类型 组件名称 属性 设置结果 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中各组件的位置和排列顺序调整窗体中组件的位置和排列顺序:

Visual C#中用WMI控制远程计算机
图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控制远程计算机】的运行界面。

Visual C#中用WMI控制远程计算机
图10:【利用WMI控制远程计算机】的运行界面

  总结:

  通过以上示例,可见WMI的确是一个非常有用的东西,但由于它还比较新,国内甚至国外还没有完整的介绍资料,因此只是简要的浏览了一下WMI的应用,希望本文的内容能够对大家了解、掌握使用Visual C#调用WMI的方法有所帮助。

相关文章: