.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;
            }
        }
    }

猜你喜欢

转载自www.cnblogs.com/ifordream/p/10332801.html
今日推荐