.net 停止\启动\暂停\恢复远程服务器的服务
public class WinServices { private string strPath; private ManagementClass managementClass; public void startService() { if (remoteConnectValidate("IP", "用户名", "密码")) { win32ServiceManager("IP", "用户名", "密码"); //string[,] services = getServiceList(); //for (int i = 0; i < services.GetLength(0); i++) //{ // Console.WriteLine(services[i, 0]); // Console.WriteLine(services[i, 1]); // Console.WriteLine(services[i, 2]); // Console.WriteLine(services[i, 3]); //} //StartService 启动服务,PauseService 暂停服务,ResumeService 恢复服务,StopService 停止服务 ManagementObject mo = this.managementClass.CreateInstance(); //重启 ZMService3ERPBasic 服务 string serviceName = "ZMService3ERPBasic"; mo.Path = new ManagementPath(this.strPath + ".Name=\"" + serviceName + "\""); mo.InvokeMethod("StopService", null); mo.InvokeMethod("StartService", null); Console.WriteLine("服务:{0}已重启!", serviceName); //重启 ZMService3ERPServer 服务 serviceName = "ZMService3ERPServer"; mo.Path = new ManagementPath(this.strPath + ".Name=\"" + serviceName + "\""); mo.InvokeMethod("StopService", null); mo.InvokeMethod("StartService", null); Console.WriteLine("服务:{0}已重启!", serviceName); } } /// <summary> /// 验证是否能连接到远程计算机 /// </summary> /// <param name="host">主机名或ip</param> /// <param name="userName">用户名</param> /// <param name="password">密码</param> /// <returns></returns> public static bool remoteConnectValidate(string host, string userName, string password) { ConnectionOptions connectionOptions = new ConnectionOptions(); connectionOptions.Username = userName; connectionOptions.Password = password; ManagementScope managementScope = new ManagementScope("\\\\" + host + "\\root\\cimv2", connectionOptions); try { managementScope.Connect(); } catch { } return managementScope.IsConnected; } /// <summary> /// 获取所连接的计算机的所有服务数据 /// </summary> /// <returns></returns> public string[,] getServiceList() { string[,] services = new string[this.managementClass.GetInstances().Count, 4]; int i = 0; foreach (ManagementObject mo in this.managementClass.GetInstances()) { services[i, 0] = (string)mo["Name"]; services[i, 1] = (string)mo["DisplayName"]; services[i, 2] = (string)mo["State"]; services[i, 3] = (string)mo["StartMode"]; i++; } return services; } public void win32ServiceManager(string host, string userName, string password) { this.strPath = "\\\\" + host + "\\root\\cimv2:Win32_Service"; this.managementClass = new ManagementClass(strPath); if (userName != null && userName.Length > 0) { ConnectionOptions connectionOptions = new ConnectionOptions(); connectionOptions.Username = userName; connectionOptions.Password = password; ManagementScope managementScope = new ManagementScope("\\\\" + host + "\\root\\cimv2", connectionOptions); this.managementClass.Scope = managementScope; } } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 提示词工程——AI应用必不可少的技术
· 地球OL攻略 —— 某应届生求职总结
· 字符编码:从基础到乱码解决
· SpringCloud带你走进微服务的世界