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中的数据调整各组件属性对应的数值:

组件类型 组件名称 属性 设置结果
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控制远程计算机】的设计界面

  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的方法有所帮助。

转载于:https://www.cnblogs.com/hzuIT/articles/683011.html

Visual C#中用WMI控制远程计算机相关推荐

  1. Visual C#中用WMI获取远程计算机信息

    如果不使用WMI,想要获取远程计算机的系统数据,最常用的方法就是在远程计算机上运行一个客户端程序,本地机通过和这个客户端程序来获取远程计算机的系 统数据.这种实现方法无论是程序设计还是后面的程序分发都 ...

  2. Visual C#中用WMI编写网络应用程序

    WMI是Windows Management Instrumentation的简称,即:视窗管理规范.在Windows 2000或以后的版本中均安装得有,NT4.0则需要安装WMI的核心组件.通过WM ...

  3. 管理远程计算机服务,C#中控制远程计算机的服务的方法

    C#中控制远程计算机的服务的方法 更新时间:2007年04月16日 00:00:00   作者: 在.net中提供了一些类来显示和控制Windows系统上的服务,并可以实现对远程计算机服务服务的访问, ...

  4. 剑走偏锋--使用WMI获取远程计算机进程程序集中查毒病毒打造内网安全环境

    剑走偏锋-使用WMI获取远程计算机进程程序 集中查毒病毒打造内网安全环境 作者:高玉涵 时间:2019.04.1815:45 博客:blog.csdn.net/cg_i 作者背景环境参见: <由 ...

  5. 局域网控制计算机运行程序,局域网控制远程计算机教程的方法

    局域网控制远程计算机教程的方法 对于许多计算机新手来说,如何使用局域网进行计算机的远程控制,是一个麻烦的问题.今天,小编就为大家带来一个局域网内远程控制计算机的简单教程,希望能为各位带来帮助. 步骤一 ...

  6. C#控制远程计算机的服务

    在.net中提供了一些类来显示和控制Windows系统上的服务,并可以实现对远程计算机服务服务的访问,如System.ServiceProcess命名空间下面的ServiceController 类, ...

  7. 使用C#控制远程计算机的服务[转]

    在.net中提供了一些类来显示和控制Windows系统上的服务,并可以实现对远程计算机服务服务的访问,如 System.ServiceProcess命名空间下面的ServiceController 类 ...

  8. C#中用WMI获取远程计算

    6. 按照表05中的数据调整各组件属性对应的数值: 组件类型 组件名称 属性 设置结果 Form Form1 Text 获取远程计算机硬盘信息 Form1 FormBorderStyle FixedS ...

  9. chrome远程计算机_如何仅使用Chrome Web浏览器控制远程计算机

    chrome远程计算机 Going remote with friends and family is helpful when you need to show them how to do som ...

最新文章

  1. matlab学习日记,MATLAB学习笔记---DAY1
  2. 问:一行Python代码到底能干多少事情?(一)
  3. 倒数日怎么设置起始日_起始价131亿!杭州江河汇流区85万方综合体招标延期
  4. WEB BUTTON IN DOTNET
  5. 面试ASP.NET程序员的笔试题和机试题(转,有点意思,答案不是很标准)
  6. 解题报告——习题2-5 分数化小数(decimal) 输入正整数a,b,c,输出a/b的小数形式,精确到小数点后c位。
  7. Java zip解压,并遍历zip中的配置文件 .cfg或.properties
  8. 旧题新做:从idy的视角看数据结构
  9. C#-using与添加引用的关系
  10. ERP流程入门_从会计分录理解企业基本流程[转]
  11. android 自定义指南针,如何在android中制作自定义指南针视图
  12. idea 调节背景护眼_网易严选皓月护眼台灯评测:真正专业智能台灯,保护眼睛设计超强...
  13. 组态王与三菱PLC编程软件GXWorks2通过OPC数据库进行动态仿真,只要写三菱程序即可实现组态王动态画面
  14. 【数据库--db4o 介绍】
  15. 网络共享计算机设置方法,如何设置网络共享(局域网共享如何设置)
  16. ffmpeg 音频处理
  17. 基于Unity的VR迷宫游戏项目技术分享
  18. 古老CPU启示录-意义重大的8008 芯片
  19. Flutter版本 网易云音乐
  20. 概率论与数理统计-离散型随机变量基础知识

热门文章

  1. Delphi中TMediaPlayer播放音乐出现no MCI device open的错误的解决方法
  2. 让组件悬浮所有页面之上
  3. Notification使用详解之二:可更新进度的通知
  4. java(19) - 反射机制
  5. file表单元素怎样设置浏览按钮的样式
  6. zookeeper 四字命令的使用
  7. 剑指offer——35复杂链表的复制
  8. 设计模式【单例模式】
  9. Quartz总结(四):动态修改定时器二
  10. 用C#打开文件对话框的方法和简单使用的程序