C# WMI 远程PC(开机、关机、重启)
啥也不多说,直接上码:
- //远程重启方法
- public static bool Shutdown(ManagementScope scope)
- {
- ObjectQuery query=new ObjectQuery("select * from Win32_OperatingSystem");
- using(var searcher=new ManagementObjectSearcher(scope,query))
- {
- ManagementObjectCollection operates=searcher.Get();
- foreach(ManagementObject item in operates)
- {
- item.InvokeMethod("Reboot",str);
- }
- }
- return true;
- }
- 首先引用动态库AxMSTSCLib.dll跟MSTSCLib.dll。
- using system.Management;
- using system.net.Sockets;
- using system.net;
- using system.Diagnostics;
- namespace WMI
- {
public Class WMITools
10 {- //远程开机方法
- public static void WakeUp(string macAddress)
- {
- if(string.IsNullOrWhiteSpace(macAddress))
- return;
- byte[] mac =GetComputerMac(macAddress);
- WakeUp(mac);
- }
- //远程开机,网卡需要具备远程唤醒功能
- private static void WakeUp(byte[] mac)
- {
- UdpClient client =new UdpClient();
- client.Connect(IPAddress.Broadcast,);
- byte[] packet=new byte[*];
- for(int i=;i<;i++)
- {
- packet[i]=0xFF;
- }
- for(int i=;i<;i++)
- {
- for(int j=;j<;j++)
- {
- packet[i*+j]=mac[j];
- }
- }
- int result =client.Send(packet,packet.Length);
- client.Close();
- }
- //返回MAC值
- private static byte[] GetComputerMac(string macStr)
- {
- byte[] mac =new byte[];
- string[] str=macStr.Split(':','-');
- for(int i=;i<str.Length;i++)
- {
- mac[i]=Convert.ToByte(str[i],);
- }
- return mac;
- }
- public static ManagementScope CreateManagementScope(string server,string userName,string pwd)
- {
- string serverString =@"\\"+server+@"\root\cimv2";
- ManagementScope scope=new ManagementScope(serverString);
- scope.Options =new ConnectionOptions
- {
- UserName=userName,
- Password=pwd,
- Impersonation=ImpersonationLevel.Impersonate,
- Authentication=AuthenticationLevel.PacketPrivacy
- };
- return scope;
- }
- //远程关机方法
- public static bool Shutdown(ManagementScope scope)
- {
- ObjectQuery query=new ObjectQuery("select * from Win32_OperatingSystem");
- using(var searcher=new ManagementObjectSearcher(scope,query))
- {
- ManagementObjectCollection operates=searcher.Get();
- foreach(ManagementObject item in operates)
- {
- string[] str ={""};
- item.InvokeMethod("Shutdown",str);
- }
- }
- return true;
- }
- //远程关软件方法
- public static bool CloseSoft(ManagementScope scope,string processName)
- {
- SelectQuery query =new SelectQuery("select * from Win32_Process where Name='"+processName+"'");
- using (var searcher=new ManagementObjectSearcher(scope,query))
- {
- foreach(ManagementObject item in searcher.Get())
- {
- if(item["Name"].ToString()==processName)
- {
- item.InvokeMethod("Terminate",null);
- }
- }
- }
- return true;
- }
- }
104 }
C# WMI 远程PC(开机、关机、重启)的更多相关文章
- windows提权操作以及系统开机关机重启代码(用到了LookupPrivilegeValue和AdjustTokenPrivileges调整进程的Token权限)
对于UAC提权操作,一般在编译期间,如果程序有需求要提权,会在编译器里设置,vs2010比较简单,在工程属性里可以直接设置,vs2005稍微有点儿麻烦,参考这篇文章: http://www.seany ...
- mac OS 查看开机/关机/重启记录
last 查看最近的开关机.登录用户等记录 以及操作时间节点. last | grep reboot 查看重启记录 last | grep shutdown 查看关机记录
- 程序的开机关机重启,开机启动,休眠功能delphi实现(使用AdjustTokenPrivileges提升权限)
TShutDownStatus = (sdShutDown,sdReboot,sdLogOff,sdPowerOff); procedure ShutDown(sdStatus : TShutDown ...
- C# 关机/重启/注销计算机
一.调用 shutdown.exe 执行操作 调用 shutdown.exe 执行计算机关机.重启.注销操作,还可以设置多长时间后执行操作,代码如下: 1 /// <summary> 2 ...
- 【Linux 操作系统】Ubuntu 基础操作 基础命令 热键 man手册使用 关机 重启等命令使用
. : 关机, 如果将Linux默认运行等级设置为0, 系统将无法启动; -- : 多用户模式, 允许使用网络文件系统, 一般不使用图形界面登陆就是这种模式; -- : 多用户图形界面模式, 该模式下 ...
- Ubuntu 基础操作 基础命令 热键 man手册使用 关机 重启等命令使用
. : 关机, 如果将Linux默认运行等级设置为0, 系统将无法启动; -- : 多用户模式, 允许使用网络文件系统, 一般不使用图形界面登陆就是这种模式; -- : 多用户图形界面模式, 该模式下 ...
- Linux几种关机(重启)相关命令
在linux下一些常用的关机/重启命令有shutdown.halt.reboot.及init,它们都可以达到重启系统的目的,但每个命令的内部工作过程是不同的,通过本文的介绍,希望你可以更加灵活的运用各 ...
- Linux基础二(挂载、关机重启与系统等级)
一.Linux 基础之挂载 1. 挂载和查询 1.1 挂载 什么叫挂载?装系统的时候要给硬盘分区,在 Windows 中要分 C 盘 D 盘 DEF 盘,这个操作我们叫做分配盘符,分配盘符之后我们就可 ...
- Linux开机、重启和用户登录注销(2)
1.关机&重启命令 1.1基本介绍 shutdown shutdown -h now :表示立即关机 shutdown -h 1: 表示1分钟后关机 shutdown -r now : ...
随机推荐
- 版本名称GA的含义:SNAPSHOT->alpha->beta->release->GA
SNAPSHOT->alpha->beta->release->GA ----------------------------------------------------- ...
- 阿里云API网关(1)服务网关的产品概述
网关指南: https://help.aliyun.com/document_detail/29487.html?spm=5176.doc48835.6.550.23Oqbl 网关控制台: https ...
- 模板引擎ejs详解
singsingasong.js: const ejs=require('ejs'); ejs.renderFile('./views/singsingasong.ejs', {'name':'sin ...
- 记录java/javascript让浮点数显示两位小数的方法
参考:http://www.jb51.net/article/46010.htm 另,如果只是要在页面层展示的时候,显示为两位小数,也可以直接改前端js代码. item.turnoverRate = ...
- ActiveMQ学习系列(一)
一.JMS规范 JMS即Java消息服务(Java Message Service)应用程序接口,是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送消 ...
- python 正则详解
正则表达式概述 正则表达式,又称正规表示式.正规表示法.正规表达式.规则表达式.常规表示法(英语:Regular Expression,在代码中常简写为regex.regexp或RE),是计算机科学的 ...
- 测试驱动开发实践5————testSave之修改文档分类
[内容指引] 1.确定"修改文档分类"的微服务接口及所需的参数 2.设计测试用例及测试用例合并 3.为测试用例赋值并驱动开发 上一篇我们通过17个测试用例完成了"新增文档 ...
- UVA-562 Dividing coins---01背包+平分钱币
题目链接: https://vjudge.net/problem/UVA-562 题目大意: 给定n个硬币,要求将这些硬币平分以使两个人获得的钱尽量多,求两个人分到的钱最小差值 思路: 它所给出的n个 ...
- mysql数据库--explain(查询表是否走索引)各个字段含义
1.1 id列 数字越大越先执行,如果说数字一样大,那么就从上往下依次执行,id列为null的就表是这是一个结果集,不需要使用它来进行查询. 1.2 select_type列 常见的有: ◆ simp ...
- Spring(5)——Spring 和数据库编程
传统 JDBC 回顾 JDBC 我们一定不陌生,刚开始学习的时候,我们写过很多很多重复的模板代码: public Student getOne(int id) { String sql = " ...