并按照图09中各组件的位置和排列顺序调整窗体中组件的位置和排列顺序:
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 ) ;
}
}
{
//确定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控制远程计算机】的运行界面。
总结:
通过以上示例,可见WMI的确是一个非常有用的东西,但由于它还比较新,国内甚至国外还没有完整的介绍资料,因此只是简要的浏览了一下WMI的应用,希望本文的内容能够对大家了解、掌握使用Visual C#调用WMI的方法有所帮助。