如果叫你实现远程启动别人的计算机,你首先想到的可能是先做一个在远程计算机上面运行客户端程序,然后在本地计算机上面再做一个服务器端程序,通过这二个程序直接的通讯实现重启远程计算机。这当然是一个方法。但这未免有点麻烦。如果现在只告诉你远程计算机的管理者的登陆帐号,而并不允许你在远程的计算机上面运行一个所谓的客户端程序,让你通过程序来完成重启远程计算机。不知道你是否感觉有些困难了。其实按照上面的这些条件实现重启远程计算机,利用C#可以比较方便的完成。下面就来介绍一下具体的实现方法。

   一. C#重启远程计算机的一些理论知识:

   C#实现启动远程计算机的原理是"视窗管理规范"。就是所谓的"WMI"(Windows Management Instrumentation)。Windows 管理规范 (WMI) 支持通过 Internet 管理系统的结构。通过提供管理环境的一致观察,WMI 为用户提供通用访问管理信息。该管理的一致性使您能够管理整个系统,而不只是组件。从 Microsoft MSDN上,您可以获得有关 WMI 软件开发工具包 (SDK) 的详细信息。

   WMI(Windows 管理规范)支持有限的安全格式,允许用户在本地计算机或远程计算机上连接 WMI 之前要验证每个用户。这种安全性是操作系统已有的安全顶端的另一层。WMI 不覆盖或破坏由操作系统提供的任何现有的安全性。在默认情况下,管理员组的所有成员都可以完全控制它管理的计算机上的 WMI 服务。其他所有用户在其本地计算机上只有读取/写入/执行的权限。可以通过向被管理的计算机上的管理员组添加用户,或者在 WMI 中授权用户或组并设置权限级别来更改权限。访问基于 WMI 名称空间。在一般情况下,脚本程序的默认命名空间是"root\cimv2"。

   在WMI中有着许多足以令我们感觉惊奇的功能。重启远程计算机只是一个很小的功能。在程序中使用WMI可以编写出许多远程管理类型的应用程序。由于在.Net FrameWork SDK中提供了可以直接操作WMI的名称空间,所以C#就可以利用在这些名称空间中定义了的类来充分使用WMI控制给我们带来的各种方便。

   二.程序设计和运行的环境设置:

   (1).视窗2000服务器版

   (2). .Net FrameWork SDK Beta 2

   (3).远程计算机的管理者帐号

   以上这些不仅是本地计算机配置,还是远程计算机的配置。

   三.实现重启远程计算机所使用到在.Net FrameWork SDK Beta 2用以操作WMI名称空间和类:

   在.Net FrameWork SDK Beta 2中用来操作WMI的名称空间主要是"System.Management"。要实现重启远程计算机所使用到的类主要有六个:

   . "ConnectionOptions"类主要定义远程计算机的管理员帐号;

   . "ManagementScope"主要是以给定的管理员帐号连接给定计算机名或者IP地址的计算机;

   . "ObjectQuery"类功能是定义对远程计算机要实现那些地远程操作;

   . "ManagementObjectSearcher"类从已经完成远程连接的计算机中,得到有那些WMI操作;

   . "ManagementObjectCollection"类存放得到WMI操作;
. "ManagementObject"类调用远程计算机可进行WMI操作。

   在本文介绍的操作就是重启操作。
   四.C#重启远程计算机的重要步骤和实现方法:

   (1).连接远程计算机:

   按照下列语句可以实现连接远程计算机:

ConnectionOptions options = new ConnectionOptions ( ) ;
options.Username ="管理者帐号用户名";
options.Password = "管理者帐号口令" ;
ManagementScope scope = new ManagementScope( "\\\\" + "远程计算机名或IP地址" + "\\root\\cimv2", options ) ;
//用给定管理者用户名和口令连接远程的计算机
scope.Connect ( ) ;

   (2).得到在远程计算机中可以进行WMI控制:

System.Management.ObjectQuery oq = new System.Management.ObjectQuery ( "SELECT * FROM Win32_OperatingSystem" ) ;
ManagementObjectSearcher query1 = new ManagementObjectSearcher ( scope , oq ) ;
//得到WMI控制
ManagementObjectCollection queryCollection1 = query1.Get ( ) ;

   (3).调用WMI控制,实现重启远程计算机:

foreach ( ManagementObject mo in queryCollection1 )
{
string [ ] ss= { "" } ;
//重启远程计算机
mo.InvokeMethod ( "Reboot" , ss ) ;
}

转载于:https://www.cnblogs.com/prince1985s/archive/2006/12/02/580199.html

C#实现重新启动计算机相关推荐

  1. SQL安装时出现“以前的某个程序安装已在安装计算机上创建挂起的文件操作。运作安装程序之前必须重新启动计算机”...

    SQL安装时出现"以前的某个程序安装已在安装计算机上创建挂起的文件操作.运作安装程序之前必须重新启动计算机",但是重启了N次也没用. .net 2003安装问题-安装程序检测到另一 ...

  2. 计算机意外地重新启动或遇到错误。windows安装无法继续。若要安装windows 请单击 确定 重新启动计算机...

    快安装完系统时遇到提示:计算机意外地重新启动或遇到错误.Windows 安装无法继续.若要安装Windows,请单击"确定"重新启动计算机,然后重新启动安装".如下图所示 ...

  3. 更改计算机名引起的奇怪问题:“重新启动计算机之前控制台无法刷新”

    背景 阿里云云服务器,操作系统为 Windows Server 2008 R2 SP1 中文标准版,问题出现更改计算机名之后. 问题现象 打开服务器管理器(Server Manager),在窗口的右下 ...

  4. Sql Server 2008 精简版(Express)和管理工具的安装以及必须重新启动计算机才能安装 SQLServer的问题和第一次使用sqlexpress的连接问题

    下载地址: SQL Server 2008 Express 中文简体安装包 x86: https://download.microsoft.com/download/5/f/a/5fad1d35-e6 ...

  5. win7电脑总是提示重新启动计算机以完成重要更新的安装是怎么回事,Win7开机时弹出Windows Update提示,怎样解决?(图文)...

    Win7开机时弹出Windows Update提示,怎样解决?最近有一些Win7用户都反映了这样一个问题,就是在开关机的时候,电脑总是弹出"Windows Update"的窗口,同 ...

  6. 在安装sql server时出现“以前的某个程序安装已在安装计算机上创建挂起的文件操作。运行安装程序之前必须重新启动计算机”错误。...

    在安装sql server时出现"以前的某个程序安装已在安装计算机上创建挂起的文件操作.运行安装程序之前必须重新启动计算机"错误.无法进行下去. 这个问题,以前我遇到过,知道是删除 ...

  7. sqlsever无法重新启动计算机,有关SqlServer 2008安装及卸载的一些问题,安装检测时显示重新启动计算机....

    安装检测时显示"重新启动计算机". "需要重新启动计算机.必须重新启动计算机才能安装SQL Server.",重启后还是显示同样的问题, 解决方法: 1.开始菜 ...

  8. 关闭注册表编辑器,重新启动计算机后生效。这样资源管理器重启后就不会自动重启了。...

    那试试这个打开注册表编辑器,展开"HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/WindowsNT/CurrentVersion/Winlogon", ...

  9. 安装sqlserver2008,重新启动计算机不通过的解决办法

    安装sqlserver2008,重新启动计算机不通过的解决办法 解决步骤: a .重启机器,再进行安装,如果发现还有该错误,请按下面步骤 b.在开始->运行中输入regedit c.到HKEY_ ...

  10. 以前的某个程序安装已在安装计算机上创建挂起的文件操作。运行安装程序之前必须重新启动计算机...

    以前装过sql server,后来删掉.现在重装,却出现"以前的某个程序安装已在安装计算机上创建挂起的文件操作.运行安装程序之前必须重新启动计算机"错误.无法进行下去. 参考网上资 ...

最新文章

  1. Linux Kernel TCP/IP Stack — L1 Layer — tcpdump 抓包
  2. 《C++ Primer 4th》读书笔记 第6章-语句
  3. 超不清视频播放器-用Python将视频转成字符
  4. java求根号函数_一般实系数四次方程的一种求根公式与根的判别法则及其推导...
  5. 微信小程序引入骨架屏组件
  6. oracle sql2000,sql2000的代码改成oracle的
  7. java 耦合解耦_为什么工厂模式可以解耦?why?
  8. nuke软件功能有哪些?苹果Mac影视后期特效合成软件NUKE 13
  9. java项目开发经验总结
  10. 关于Boost的Asio的信号灯超时时间已到错误
  11. bpsk调制及解调实验_漫画讲解调制解调,深奥的通信原理是不是明白了?
  12. linux版本i686,在Ubuntu中'i686'是什么意思? - Ubuntu问答
  13. 记录mikrotik路由器的折腾过程
  14. mysql入门1:建表、插入、单表查询练习题1
  15. 【复习笔记】计算机网络求职考点整理
  16. 163邮箱怎么开通注册?公司邮箱格式选择,可以邮箱注册微信吗?
  17. java基础知识大端模式及其小端模式处理
  18. ITIL学习笔记——核心流程之:容量管理
  19. 【Golang之路】——slice总结
  20. 对于电子签名、CA、证书的理解

热门文章

  1. “达观杯”文本智能处理冠军分享:深度学习文本分类
  2. 研究百度下拉360下拉搜狗下拉神马下拉头条下拉抖音下拉的优化算法(合集帖)
  3. fckeditor漏洞_一、Ewebeidtor编辑器漏洞
  4. 有关python_30个有关Python的小技巧
  5. java doget 和dopost_Servlet中的doGet和doPost
  6. python 获取表格中的空数据_在python beautifulsoup中获取表格单元格值为空时的文本输出...
  7. excel删除重复数据保留一条_Excel怎么快速查找和删除重复数据
  8. oracle 11g Flashback Data Archive(闪回数据归档)
  9. mysql怎么保证最少一条消息_MySQL 的一条语句是怎么执行的
  10. Windows打印机驱动开发笔记(二)