【问题标题】:how to access romote windows service with Related ObjectQuery如何使用相关 ObjectQuery 访问远程 Windows 服务
【发布时间】:2025-12-26 03:45:11
【问题描述】:

我想控制(启动和停止)远程机器中的 Windows 服务。我可以连接那台机器,但我无法访问 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();

【问题讨论】:

    标签: c# visual-studio-2010 windows-services systemmanagement


    【解决方案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();
                }
    

    【讨论】: