![]() ![]() |
|
VisualC#中用WMI控制远程计算机 | |
作者:佚名 文章来源:不详 点击数 更新时间:2008/3/20 18:35:55 文章录入:杜斌 责任编辑:杜斌 | |
|
|
其实做远程控制软件,WMI是一个很好的选择,尤其是在目前,Windows 2000已经成为了主流的操作系统,利用WMI编写远程控制软件可以省略了已往远程控制软件最头痛的一个环节--分发客户端程序。 本节中介绍的远程控制程序,能够让使用者重启和关闭远程计算机。其所使用的就是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中的数据调整各组件属性对应的数值: 组件类型组件名称属性设置结果FormForm1Text利用WMI控制远程计算机Form1FormBorderStyleFixedSingleForm1MaximizeBoxFalseLabellabel1Text机器名称或IP地址:label2Text具有WMI权限的超级用户名:label3 Text口令:label4Text选择控制类型:TextBoxtextBox1Text""textBox2Text ""textBox3PasswordChar*textBox3Text ""Buttonbutton1Text执行button1FlatStyle Flat 表06:【利用WMI控制远程计算机】项目窗体中各组件的主要属性设定数值表 并按照图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 ) ; } }
总结: |
|
![]() ![]() |