2011-08-19 19 views
2

我想控制(启动和停止)远程计算机上的Windows服务。我可以连接该机器,但无法访问Windows服务。这是我的代码。 你能帮我吗?如何使用相关ObjectQuery访问romote Windows服务

ConnectionOptions oConn = new ConnectionOptions(); 
    oConn.Username = "****"; 
    oConn.Password = "****"; 

    ManagementScope managementScope = new ManagementScope(@"\\***.***.***.***\root\CIMV2", oConn); 
    managementScope.Connect(); 

    RelatedObjectQuery roq = new RelatedObjectQuery("Win32_Service.Name='KanAktarim'"); 
    ManagementObjectSearcher moSearcher = new ManagementObjectSearcher(managementScope, roq); 
    ManagementObjectCollection mbCollection = moSearcher.Get(); 

回答

1
  ManagementObjectSearcher moSearcher = new ManagementObjectSearcher(); 
      moSearcher.Scope = managementScope; 
      moSearcher.Query = new ObjectQuery("SELECT * FROM win32_Service WHERE Name ='KanAktarim'"); 
      ManagementObjectCollection mbCollection = moSearcher.Get(); 

      foreach (ManagementObject oReturn in mbCollection) 
      { 
       ManagementBaseObject outParams = oReturn.InvokeMethod("StartService", null, null); 
       ManagementBaseObject outParams = oReturn.InvokeMethod("StopService", null, null); 
       string a = outParams["ReturnValue"].ToString(); 

       string state = oReturn.Properties["State"].Value.ToString().Trim(); 
      }