啥也不多说,直接上码:

  1. //远程重启方法    
  2. public static bool Shutdown(ManagementScope scope)
  3. {
  4. ObjectQuery query=new ObjectQuery("select * from Win32_OperatingSystem");
  5. using(var searcher=new ManagementObjectSearcher(scope,query))
  6. {
  7. ManagementObjectCollection operates=searcher.Get();
  8. foreach(ManagementObject item in operates)
  9. {
  10. item.InvokeMethod("Reboot",str);
  11. }
  12. }
  13. return true;
  14. }
  1. 首先引用动态库AxMSTSCLib.dllMSTSCLib.dll
  2.  
  3. using system.Management;
  4. using system.net.Sockets;
  5. using system.net;
  6. using system.Diagnostics;
  7. namespace WMI
  8. {
       public Class WMITools
    10 {
  9.  
  10.   //远程开机方法
  11.   public static void WakeUp(string macAddress)
  12.   {
  13.  
  14.     if(string.IsNullOrWhiteSpace(macAddress))
  15. return;
  16.     byte[] mac =GetComputerMac(macAddress);
  17.     WakeUp(mac);
  18.   }
  19.  
  20.   //远程开机,网卡需要具备远程唤醒功能
  21.   private static void WakeUp(byte[] mac)
  22.   {
  23.     UdpClient client =new UdpClient();
  24.     client.Connect(IPAddress.Broadcast,);
  25.     byte[] packet=new byte[*];
  26.     for(int i=;i<;i++)
  27.     {
  28. packet[i]=0xFF;
  29. }
  30.     for(int i=;i<;i++)
  31.     {
  32.       for(int j=;j<;j++)
  33.       {
  34. packet[i*+j]=mac[j];
  35. }
  36.     }
  37.     int result =client.Send(packet,packet.Length);
  38.     client.Close();
  39.   }
  40.  
  41.   //返回MAC值
  42.   private static byte[] GetComputerMac(string macStr)
  43.   {
  44.     byte[] mac =new byte[];
  45.     string[] str=macStr.Split(':','-');
  46.     for(int i=;i<str.Length;i++)
  47.     {
  48.       mac[i]=Convert.ToByte(str[i],);
  49.     }
  50.     return mac;
  51.   }
  52.  
  53.   public static ManagementScope CreateManagementScope(string server,string userName,string pwd)
  54.   {
  55.     string serverString =@"\\"+server+@"\root\cimv2";
  56.     ManagementScope scope=new ManagementScope(serverString);
  57.     scope.Options =new ConnectionOptions
  58.     {
  59.         UserName=userName,
  60.         Password=pwd,
  61.         Impersonation=ImpersonationLevel.Impersonate,
  62.         Authentication=AuthenticationLevel.PacketPrivacy
  63.     };
  64.     return scope;
  65.   }
  66.  
  67.   //远程关机方法
  68.  
  69.   public static bool Shutdown(ManagementScope scope)
  70.   {
  71.     ObjectQuery query=new ObjectQuery("select * from Win32_OperatingSystem");
  72.     using(var searcher=new ManagementObjectSearcher(scope,query))
  73.     {
  74.       ManagementObjectCollection operates=searcher.Get();
  75.       foreach(ManagementObject item in operates)
  76.       {
  77.         string[] str ={""};
  78.         item.InvokeMethod("Shutdown",str);
  79.       }
  80.     }
  81.     return true;
  82.   }
  83.  
  84.   //远程关软件方法
  85.  
  86.   public static bool CloseSoft(ManagementScope scope,string processName)
  87.   {
  88.     SelectQuery query =new SelectQuery("select * from Win32_Process where Name='"+processName+"'");
  89.     using (var searcher=new ManagementObjectSearcher(scope,query))
  90.     {
  91.       foreach(ManagementObject item in searcher.Get())
  92.       {
  93.         if(item["Name"].ToString()==processName)
  94.         {
  95.           item.InvokeMethod("Terminate",null);
  96.         }
  97.       }
  98.     }
  99.     return true;
  100.   }
  101. }
    104 }

C# WMI 远程PC(开机、关机、重启)的更多相关文章

  1. windows提权操作以及系统开机关机重启代码(用到了LookupPrivilegeValue和AdjustTokenPrivileges调整进程的Token权限)

    对于UAC提权操作,一般在编译期间,如果程序有需求要提权,会在编译器里设置,vs2010比较简单,在工程属性里可以直接设置,vs2005稍微有点儿麻烦,参考这篇文章: http://www.seany ...

  2. mac OS 查看开机/关机/重启记录

    last 查看最近的开关机.登录用户等记录 以及操作时间节点. last | grep reboot 查看重启记录 last | grep shutdown 查看关机记录

  3. 程序的开机关机重启,开机启动,休眠功能delphi实现(使用AdjustTokenPrivileges提升权限)

    TShutDownStatus = (sdShutDown,sdReboot,sdLogOff,sdPowerOff); procedure ShutDown(sdStatus : TShutDown ...

  4. C# 关机/重启/注销计算机

    一.调用 shutdown.exe 执行操作 调用 shutdown.exe 执行计算机关机.重启.注销操作,还可以设置多长时间后执行操作,代码如下: 1 /// <summary> 2 ...

  5. 【Linux 操作系统】Ubuntu 基础操作 基础命令 热键 man手册使用 关机 重启等命令使用

    . : 关机, 如果将Linux默认运行等级设置为0, 系统将无法启动; -- : 多用户模式, 允许使用网络文件系统, 一般不使用图形界面登陆就是这种模式; -- : 多用户图形界面模式, 该模式下 ...

  6. Ubuntu 基础操作 基础命令 热键 man手册使用 关机 重启等命令使用

    . : 关机, 如果将Linux默认运行等级设置为0, 系统将无法启动; -- : 多用户模式, 允许使用网络文件系统, 一般不使用图形界面登陆就是这种模式; -- : 多用户图形界面模式, 该模式下 ...

  7. Linux几种关机(重启)相关命令

    在linux下一些常用的关机/重启命令有shutdown.halt.reboot.及init,它们都可以达到重启系统的目的,但每个命令的内部工作过程是不同的,通过本文的介绍,希望你可以更加灵活的运用各 ...

  8. Linux基础二(挂载、关机重启与系统等级)

    一.Linux 基础之挂载 1. 挂载和查询 1.1 挂载 什么叫挂载?装系统的时候要给硬盘分区,在 Windows 中要分 C 盘 D 盘 DEF 盘,这个操作我们叫做分配盘符,分配盘符之后我们就可 ...

  9. Linux开机、重启和用户登录注销(2)

    1.关机&重启命令 1.1基本介绍 shutdown shutdown -h now :表示立即关机 shutdown -h 1:     表示1分钟后关机 shutdown -r now : ...

随机推荐

  1. 版本名称GA的含义:SNAPSHOT->alpha->beta->release->GA

    SNAPSHOT->alpha->beta->release->GA ----------------------------------------------------- ...

  2. 阿里云API网关(1)服务网关的产品概述

    网关指南: https://help.aliyun.com/document_detail/29487.html?spm=5176.doc48835.6.550.23Oqbl 网关控制台: https ...

  3. 模板引擎ejs详解

    singsingasong.js: const ejs=require('ejs'); ejs.renderFile('./views/singsingasong.ejs', {'name':'sin ...

  4. 记录java/javascript让浮点数显示两位小数的方法

    参考:http://www.jb51.net/article/46010.htm 另,如果只是要在页面层展示的时候,显示为两位小数,也可以直接改前端js代码. item.turnoverRate = ...

  5. ActiveMQ学习系列(一)

    一.JMS规范 JMS即Java消息服务(Java Message Service)应用程序接口,是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送消 ...

  6. python 正则详解

    正则表达式概述 正则表达式,又称正规表示式.正规表示法.正规表达式.规则表达式.常规表示法(英语:Regular Expression,在代码中常简写为regex.regexp或RE),是计算机科学的 ...

  7. 测试驱动开发实践5————testSave之修改文档分类

    [内容指引] 1.确定"修改文档分类"的微服务接口及所需的参数 2.设计测试用例及测试用例合并 3.为测试用例赋值并驱动开发 上一篇我们通过17个测试用例完成了"新增文档 ...

  8. UVA-562 Dividing coins---01背包+平分钱币

    题目链接: https://vjudge.net/problem/UVA-562 题目大意: 给定n个硬币,要求将这些硬币平分以使两个人获得的钱尽量多,求两个人分到的钱最小差值 思路: 它所给出的n个 ...

  9. mysql数据库--explain(查询表是否走索引)各个字段含义

    1.1 id列 数字越大越先执行,如果说数字一样大,那么就从上往下依次执行,id列为null的就表是这是一个结果集,不需要使用它来进行查询. 1.2 select_type列 常见的有: ◆ simp ...

  10. Spring(5)——Spring 和数据库编程

    传统 JDBC 回顾 JDBC 我们一定不陌生,刚开始学习的时候,我们写过很多很多重复的模板代码: public Student getOne(int id) { String sql = " ...