注册通行证 用户名 密码
  • 文章投稿
  • 博客
  • 论坛
  • 设为首页
  • 加入收藏
jztop.com网络技术
  • 首页
  • | iT新闻
  • | 操作系统
  • | 组网建网
  • | 网络安全
  • | 程序开发
  • | 办公一族
  • | 工具软件
  • | 网页制作
  • | 多媒体制作
  • | 网吧技术
  • | 服务器
  • | 专题教程
Vista | 软件评测 | 系统备份 | 优化 | 进程 | 聊天 | 病毒 | Linux | 黑客 | 防火墙 | 数据库 | Web开发 | Java | Word | 游戏 | 32位开发 | 移动开发
当前位置:首页 > 程序开发 > 微软开发专栏 > VC.NET 内容正文:Visual C#中用WMI控制远程计算机

Visual C#中用WMI控制远程计算机

发布时间:2006-04-21 11:10:38 来源:天极开发 网友评论 0 条
  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中的数据调整各组件属性对应的数值:

组件类型组件名称属性设置结果
FormForm1Text利用WMI控制远程计算机
Form1FormBorderStyleFixedSingle
Form1MaximizeBoxFalse
Labellabel1Text机器名称或IP地址:
label2Text具有WMI权限的超级用户名:
label3 Text口令:
label4Text选择控制类型:
TextBoxtextBox1Text""
textBox2Text ""
textBox3PasswordChar*
textBox3Text ""
Buttonbutton1Text执行
button1FlatStyle 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的方法有所帮助。
相关文章
  • Visual C#中用WMI获取远程计算机信息
  • Visual C#中用WMI编写黑客程序之简介
  • VC++.NET中事件编程剖析之什么是事件
  • 基于MVC模式的Struts框架研究与应用
  • VC++内部COM插件的编程实现
【评论】【收藏本文】【打印】【关闭】
上一篇文章:Visual C#中用WMI编写黑客程序之简介
下一篇文章:Visual C#中用WMI获取远程计算机信息
讨论区
查看
已有 0 位对此新闻感兴趣的网友发表了看法
匿名发表
注册通行证 登陆
图文阅读推荐
用VC获取其它程序的命令行参数
用VC获取其它程序的命令行参数
用Visual C++设计QQ群管理工具
用Visual C++设计QQ群管理工具
推荐阅讯
  • VC++内部COM插件的编程实现
  • Visual C++ 2005图像编程之预备知识
  • VC#2005快速入门之复合赋值操作符
  • Visual C++ 2005图像编程之工具栏
  • 基于Visual C++6.0的声音文件操作
  • Visual C# 2005中编写Socket网络程序
  • 利用VC++实现AVI文件的合成和分解
  • VC#2005快速入门之使用while语句
  • Visual C#中用WMI获取远程计算机信息
  • VC中对鼠标的确定及简单控制
阅读排行
  • 1.VC++编程实现广告窗口自动关闭
  • 2.深入浅出VC++串口编程之基于控件
  • 3.解读VC++编程中的文件操作API和CFile类
  • 4.利用Visual C#实现ICMP网络协议
  • 5.深入浅出VC++串口编程之第三方类
  • 6.掀起你的盖头来——谈VC++对象模型
  • 7.Visual C#中用WMI控制远程计算机
  • 8.深入浅出VC++串口编程之基于Win32 API
  • 9.Visual C++2005中开发自定义绘图控件
  • 10.深入浅出VC++串口编程之基本概念
专题教程
  • 大话G游 专题:手机病毒揭密
  • ARP攻击防范与解决方案 路由故障处理手册
  • Picasa中文版_Picasa教程 专题:清除流氓软件
  • Firefox专题 seo搜索引擎优化专区
  • 重装Windows必知的事情 装机之必备软件大行动
病毒专杀栏
  • 杀毒软件反被病毒杀 连"救命"都不能喊
  • 金山ARP防火墙
  • 还原卡神话破灭“机器狗”病毒来势汹汹
  • cctv经济半小时:你的手机现在安全吗?
  • 新挂马方式开始流行 ARP挂马称雄局域网
  • 木马和病毒清除的通用解法
  • IP地址不再冲突 查找ARP攻击者元凶
  • 教你几招识别和防御Web网页木马
  • 分析:封杀BT只是暂时的止痛药
  • QQ爆危险漏洞,“QQ游戏邀请大盗”邀请你玩病
关于我们 | 诚聘英才 | 联系我们 | 版权声明 | 网站大事 | 网站地图 | 意见建议
CopyRight 2005-2007 Jztop.Com 版权所有 未经许可 请勿转载