C# WMI 远程PC(开机、关机、重启)
2024-10-15 16:44:17
啥也不多说,直接上码:
//远程重启方法
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 }
最新文章
- android:configChanges=";keyboard|keyboardHidden|orientation|screenSize";
- HTML 样式表
- 【面经】【转】C程序的内存布局
- DotNetBar中ListViewEx控件的使用
- CentOS 6.5下源码安装MySQL 5.6
- [转] [环境搭建] VS-Visual Studio-IIS Express 支持局域网访问
- HDU5090--Game with Pearls 二分图匹配 (匈牙利算法)
- 函数调用和inline作用
- cpio备份命令
- leetcode@ [127] Word Ladder (BFS / Graph)
- Pro Android 4 第六章 构建用户界面以及使用控件(一)
- BZOJ 1734: [Usaco2005 feb]Aggressive cows 愤怒的牛( 二分答案 )
- ABP展现层——动态生成WebApi
- 3、XCode: 如何添加自定义代码片段
- Android初级教程进程间的通信AIDL
- Python作用域详述
- wiki 安装
- 使用Docker的macvlan为容器提供桥接网络及跨主机通讯
- idea导出可执行jar包
- notepad++ jstool 插件安装