Visual C#中用WMI控制远程计算机2010-09-02 天极 阿虎WMI不仅可以获取想要的计算机数据,而且还可以用以远程控制。远程控制计算机不仅是黑客们的梦想,也是大多数网络管理者所渴望得到的,尤其在现代的网络中,每一个网络管理者所面对的局域网,都是由一个庞大的计算机群组成,如果有效的管理网络的每一台计算机就显得格外重要了。目前网络管理软件通常的做法是,在远程计算机上运行客户端后台程序,在本地计算机上运行一个服务器端前台控制程序,通过这二个程序直接的通讯实现对计算机的远程控制。这种作法的缺点是十分明显的,当客户端关闭了后台程序,这种远程管理就无法实现了,所以为了克服这个缺点,远程控制软件的客户端程序就做的非常隐蔽,使用户在不知觉中运行程序。其实做远程控制软件,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中的数据调整各组件属性对应的数值:
组件类型 | 组件名称 | 属性 | 设置结果 |
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控制远程计算机】的设计界面