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 : ...
随机推荐
- Jmeter入门(01)Jmeter的下载和安装
一.什么是Jmeter 1.一款优秀的.开源的.免费的.功能测试和性能测试 工具 Jmeter ,使用Java开发的一款优秀的开源免费测试工具,主要用来做功能测试和性能测试(压力测试/负载测试),用J ...
- python入门(11)条件判断和循环
python入门(11)条件判断和循环 条件判断 计算机之所以能做很多自动化的任务,因为它可以自己做条件判断. 比如,输入用户年龄,根据年龄打印不同的内容,在Python程序中,用if语句实现: ag ...
- java 数组排序方法整理,简单易懂,
1.快速排序:首先是最简单的Array.sort,直接进行排序: public static void main(String[] args) { int[] arr = {4,3,5,1,7,9,3 ...
- Krajee插件的用法
第一步: <!-- 必须引入 --> link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/boots ...
- 其实你并不懂如何定义一个 PHP 函数
<?php function divide($dividend, $divisor){ return $dividend / $divisor; } echo divide(12, 4); ec ...
- 如何在命令行中让python2和python3同存
初学python,你可能同时安装了python2和3.在我们安装好python之后,我们会面临这样一个问题,在命令行输入"python",可能会出错,或者只能调用其中一个版本,py ...
- Lintcode373 Partition Array by Odd and Even solution 题解
[题目描述] Partition an integers array into odd number first and even number second. 分割一个整数数组,使得奇数在前偶数在后 ...
- 浅谈 Mybatis中的 ${ } 和 #{ }的区别
好了,真正做开发也差不多一年了.一直都是看别人的博客,自己懒得写,而且也不会写博客,今天就开始慢慢的练习一下写博客吧.前段时间刚好在公司遇到这样的问题. 一.举例说明 select * from us ...
- Mysql 库表
create database student_info default character set utf8 collate utf8_general_ci; ------------------- ...
- 字符串分割方法split()函数
>>> data = '1000,小甲鱼,男'>>> data.split(',')['1000', '小甲鱼', '男'] str.split('以什么为标志进行 ...