不多说废话(没话说)

核OJ上手敲的,敲完才发现没缩进

using System; 
using System.Management; 
namespace ZZ.Wmi 
{ 
public class Win32ServiceManager 
{ 
private string strPath; 
private ManagementClass managementClass; 
public Win32ServiceManager():this(".",null,null) 
{ 
} 
public 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; 
} 
} 
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; 
} 
public object GetServiceValue(string serviceName,string propertyName) 
{ 
ManagementObject mo = this.managementClass.CreateInstance(); 
mo.Path = new ManagementPath(this.strPath+".Name=\""+serviceName+"\""); 
return mo[propertyName]; 
} 
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 string [,] GetServiceList(string serverName) 
{ 
return GetServiceList(new string []{serverName}); 
} 
public string [,] GetServiceList(string [] serverNames) 
{ 
string [,] services = new string [serverNames.Length,4]; 
ManagementObject mo = this.managementClass.CreateInstance(); 
for(int i = 0;i<serverNames.Length;i++) 
{ 
mo.Path = new ManagementPath(this.strPath+".Name=\""+serverNames[i]+"\""); 
services[i,0] = (string)mo["Name"]; 
services[i,1] = (string)mo["DisplayName"]; 
services[i,2] = (string)mo["State"]; 
services[i,3] = (string)mo["StartMode"]; 
} 
return services; 
} 
public string StartService(string serviceName) 
{ 
string strRst = null; 
ManagementObject mo = this.managementClass.CreateInstance(); 
mo.Path = new ManagementPath(this.strPath+".Name=\""+serviceName+"\""); 
try 
{ 
if((string)mo["State"]=="Stopped")
mo.InvokeMethod("StartService",null); 
} 
catch(ManagementException e) 
{ 
strRst =e.Message; 
} 
return strRst; 
} 
public string PauseService(string serviceName) 
{ 
string strRst = null; 
ManagementObject mo = this.managementClass.CreateInstance(); 
mo.Path = new ManagementPath(this.strPath+".Name=\""+serviceName+"\""); 
try 
{ 
if((bool)mo["acceptPause"]&&(string)mo["State"]=="Running") 
mo.InvokeMethod("PauseService",null); 
} 
catch(ManagementException e) 
{ 
strRst =e.Message; 
} 
return strRst; 
} 
public string ResumeService(string serviceName) 
{ 
string strRst = null; 
ManagementObject mo = this.managementClass.CreateInstance(); 
mo.Path = new ManagementPath(this.strPath+".Name=\""+serviceName+"\""); 
try 
{ 
if((bool)mo["acceptPause"]&&(string)mo["State"]=="Paused") 
mo.InvokeMethod("ResumeService",null); 
} 
catch(ManagementException e) 
{ 
strRst =e.Message; 
} 
return strRst; 
} 
public string StopService(string serviceName) 
{ 
string strRst = null; 
ManagementObject mo = this.managementClass.CreateInstance(); 
mo.Path = new ManagementPath(this.strPath+".Name=\""+serviceName+"\""); 
try 
{ 
if((bool)mo["AcceptStop"])
mo.InvokeMethod("StopService",null); 
} 
catch(ManagementException e) 
{ 
strRst =e.Message; 
} 
return strRst; 
} 
} 
}

然后写了个窗体……

using ZZ.Wmi; 
namespace ZZForm 
{ 
public class Form1 : System.Windows.Forms.Form 
{ 
private Win32ServiceManager serviceManager; 
public Form1() 
{ 
InitializeComponent(); 
this.serviceManager = null; 
} 
[STAThread] 
static void Main() 
{ 
Application.Run(new Form1()); 
}
private void buttonChangeState_Click(object sender, System.EventArgs e) 
{ 
switch(((Button)sender).Text) 
{ 
case "启动": 
string startRst = this.serviceManager.StartService(this.listViewService.SelectedItems[0].SubItems[0].Text); 
if(startRst==null) 
MessageBox.Show("操作成功,请点击获取刷新按钮刷新结果!"); 
else 
MessageBox.Show(startRst); 
break; 
case "暂停": 
string startPause = this.serviceManager.PauseService(this.listViewService.SelectedItems[0].SubItems[0].Text); 
if(startPause==null) 
MessageBox.Show("操作成功,请点击获取刷新按钮刷新结果!"); 
else 
MessageBox.Show(startPause); 
break; 
case "继续": 
string startResume = this.serviceManager.ResumeService(this.listViewService.SelectedItems[0].SubItems[0].Text); 
if(startResume==null) 
MessageBox.Show("操作成功,请点击获取刷新按钮刷新结果!"); 
else 
MessageBox.Show(startResume); 
break; 
case "停止": 
string startStop = this.serviceManager.StopService(this.listViewService.SelectedItems[0].SubItems[0].Text); 
if(startStop==null) 
MessageBox.Show("操作成功,请点击获取刷新按钮刷新结果!"); 
else 
MessageBox.Show(startStop); 
break; 
} 
} 
private void buttonLoadRefresh_Click(object sender, System.EventArgs e) 
{ 
if(this.textBoxHost.Text.Trim().Length>0) 
{ 
if(this.textBoxHost.Text.Trim()==".") 
{ 
this.serviceManager = new Win32ServiceManager(); 
} 
else 
{ 
if(Win32ServiceManager.RemoteConnectValidate(this.textBoxHost.Text.Trim(),this.textBoxName.Text.Trim(),this.textBoxPassword.Text.Trim())) 
{ 
this.serviceManager = new Win32ServiceManager(this.textBoxHost.Text.Trim(),this.textBoxName.Text.Trim(),this.textBoxPassword.Text.Trim()); 
} 
else 
{ 
MessageBox.Show("连接到远程计算机验证错误."); 
return; 
} 
} 
string [,] services = serviceManager.GetServiceList(); 
this.listViewService.BeginUpdate(); 
this.listViewService.Items.Clear(); 
for(int i=0;i<services.GetLength(0);i++) 
{ 
ListViewItem item = new ListViewItem(new string[]{services[i,0],services[i,1],services[i,2],services[i,3]}); 
this.listViewService.Items.Add(item); 
} 
this.listViewService.EndUpdate(); 
} 
else 
MessageBox.Show("请输入计算机名或IP地址"); 
} 
} 
} 

就这样吧(超,)

6 comments

  • @ 2023-8-30 17:08:54
    using ZZ.Wmi;
    namespace ZZForm 
    { 
        public class Form1 : System.Windows.Forms.Form 
        { 
            private Win32ServiceManager serviceManager; 
            
            public Form1() 
            { 
                InitializeComponent(); 
                this.serviceManager = null; 
            } 
            
            [STAThread] 
            static void Main() 
            { 
                Application.Run(new Form1()); 
            }
            
            private void buttonChangeState_Click(object sender, System.EventArgs e) 
            { 
                switch(((Button)sender).Text) 
                { 
                    case "启动": 
                        string startRst = this.serviceManager.StartService(this.listViewService.SelectedItems[0].SubItems[0].Text); 
                        if(startRst == null) 
                            MessageBox.Show("操作成功,请点击获取刷新按钮刷新结果!"); 
                        else 
                            MessageBox.Show(startRst); 
                        break; 
                    case "暂停": 
                        string startPause = this.serviceManager.PauseService(this.listViewService.SelectedItems[0].SubItems[0].Text); 
                        if(startPause == null) 
                            MessageBox.Show("操作成功,请点击获取刷新按钮刷新结果!"); 
                        else 
                            MessageBox.Show(startPause); 
                        break; 
                    case "继续": 
                        string startResume = this.serviceManager.ResumeService(this.listViewService.SelectedItems[0].SubItems[0].Text); 
                        if(startResume == null) 
                            MessageBox.Show("操作成功,请点击获取刷新按钮刷新结果!"); 
                        else 
                            MessageBox.Show(startResume); 
                        break; 
                    case "停止": 
                        string startStop = this.serviceManager.StopService(this.listViewService.SelectedItems[0].SubItems[0].Text); 
                        if(startStop == null) 
                            MessageBox.Show("操作成功,请点击获取刷新按钮刷新结果!"); 
                        else 
                            MessageBox.Show(startStop); 
                        break; 
                } 
            } 
            
            private void buttonLoadRefresh_Click(object sender, System.EventArgs e) 
            { 
                if(this.textBoxHost.Text.Trim().Length > 0) 
                { 
                    if(this.textBoxHost.Text.Trim() == ".") 
                    { 
                        this.serviceManager = new Win32ServiceManager(); 
                    } 
                    else 
                    { 
                        if(Win32ServiceManager.RemoteConnectValidate(this.textBoxHost.Text.Trim(), this.textBoxName.Text.Trim(), this.textBoxPassword.Text.Trim())) 
                        { 
                            this.serviceManager = new Win32ServiceManager(this.textBoxHost.Text.Trim(), this.textBoxName.Text.Trim(), this.textBoxPassword.Text.Trim()); 
                        } 
                        else 
                        { 
                            MessageBox.Show("连接到远程计算机验证错误."); 
                            return; 
                        } 
                    } 
    
                    string [,] services = serviceManager.GetServiceList(); 
                    this.listViewService.BeginUpdate(); 
                    this.listViewService.Items.Clear(); 
                    for(int i = 0; i < services.GetLength(0); i++) 
                    { 
                        ListViewItem item = new ListViewItem(new string[]{services[i, 0], services[i, 1], services[i, 2], services[i, 3]}); 
                        this.listViewService.Items.Add(item); 
                    } 
                    this.listViewService.EndUpdate(); 
                } 
                else 
                { 
                    MessageBox.Show("请输入计算机名或IP地址"); 
                } 
            } 
        } 
    }
    
    • @ 2023-8-30 17:00:56
      using System.Management;
      
      namespace ZZ.Wmi
      {
          public class Win32ServiceManager
          {
              private string strPath;
              private ManagementClass managementClass;
      
              public Win32ServiceManager() : this(".", null, null)
              {
              }
      
              public 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;
                  }
              }
      
              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;
              }
      
              public object GetServiceValue(string serviceName, string propertyName)
              {
                  ManagementObject mo = this.managementClass.CreateInstance();
                  mo.Path = new ManagementPath(this.strPath + ".Name=\"" + serviceName + "\"");
                  return mo[propertyName];
              }
      
              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 string[,] GetServiceList(string serverName)
              {
                  return GetServiceList(new string[] { serverName });
              }
      
              public string[,] GetServiceList(string[] serverNames)
              {
                  string[,] services = new string[serverNames.Length, 4];
                  ManagementObject mo = this.managementClass.CreateInstance();
      
                  for (int i = 0; i < serverNames.Length; i++)
                  {
                      mo.Path = new ManagementPath(this.strPath + ".Name=\"" + serverNames[i] + "\"");
                      services[i, 0] = (string)mo["Name"];
                      services[i, 1] = (string)mo["DisplayName"];
                      services[i, 2] = (string)mo["State"];
                      services[i, 3] = (string)mo["StartMode"];
                  }
      
                  return services;
              }
      
              public string StartService(string serviceName)
              {
                  string strRst = null;
                  ManagementObject mo = this.managementClass.CreateInstance();
                  mo.Path = new ManagementPath(this.strPath + ".Name=\"" + serviceName + "\"");
      
                  try
                  {
                      if ((string)mo["State"] == "Stopped")
                          mo.InvokeMethod("StartService", null);
                  }
                  catch (ManagementException e)
                  {
                      strRst = e.Message;
                  }
      
                  return strRst;
              }
      
              public string PauseService(string serviceName)
              {
                  string strRst = null;
                  ManagementObject mo = this.managementClass.CreateInstance();
                  mo.Path = new ManagementPath(this.strPath + ".Name=\"" + serviceName + "\"");
      
                  try
                  {
                      if ((bool)mo["acceptPause"] && (string)mo["State"] == "Running")
                          mo.InvokeMethod("PauseService", null);
                  }
                  catch (ManagementException e)
                  {
                      strRst = e.Message;
                  }
                  
                  return strRst;
              }
      
              public string ResumeService(string serviceName)
              {
                  string strRst = null;
                  ManagementObject mo = this.managementClass.CreateInstance();
                  mo.Path = new ManagementPath(this.strPath + ".Name=\"" + serviceName + "\"");
      
                  try
                  {
                      if ((bool)mo["acceptPause"] && (string)mo["State"] == "Paused")
                          mo.InvokeMethod("ResumeService", null);
                  }
                  catch (ManagementException e)
                  {
                      strRst = e.Message;
                  }
                  
                  return strRst;
              }
      
              public string StopService(string serviceName)
              {
                  string strRst = null;
                  ManagementObject mo = this.managementClass.CreateInstance();
                  mo.Path = new ManagementPath(this.strPath + ".Name=\"" + serviceName + "\"");
      
                  try
                  {
                      if ((bool)mo["AcceptStop"])
                          mo.InvokeMethod("StopService", null);
                  }
                  catch (ManagementException e)
                  {
                      strRst = e.Message;
                  }
                  
                  return strRst;
              }
          }
      }
      
      
    • @ 2023-8-20 9:49:02

      6

      • @ 2023-8-19 23:00:00

        6666666666666666666666

        • @ 2023-8-19 20:59:56

          666

          • @ 2023-8-19 20:43:12

            6

            • 1