如何从另一台计算机运行一台计算机的服务

时间:2019-08-22 06:49:47

标签: c#

我有一个代码试图访问另一台计算机的服务。

try
{
    var serviceName = "MyService";
    var ip = "10.10.11.16";
    var username = "SomeUser";
    var password = "APassword";
    var connectoptions = new ConnectionOptions();
    connectoptions.Impersonation = ImpersonationLevel.Impersonate;
    connectoptions.Authentication = AuthenticationLevel.Packet;
    connectoptions.EnablePrivileges = true;
    connectoptions.Username = username;
    connectoptions.Password = password;
    var scope = new ManagementScope("\\\\10.10.11.16\\root\\cimv2");
    scope.Options = connectoptions;

    var query = new SelectQuery("select * from Win32_Service where name = '" + serviceName + "'");
    using (ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, query))
    {
        var collection = searcher.Get();
        foreach (ManagementObject service in collection.OfType<ManagementObject>())
        {
            if (service["started"].Equals(true))
            {
                service.InvokeMethod("StopService", null);
                BtnStartStop.Content = "Stop";
                LblService.Content = serviceName;
                LblServiceStatus.Content = "Stopped";
            }
            else
            {
                service.InvokeMethod("StartService", null);
                BtnStartStop.Content = "Stop";
                LblService.Content = serviceName;
                LblServiceStatus.Content = "Running";
            }
        }
    }
}
catch (Exception ex)
{
    MessageBox.Show(ex.Message);
}

这仅适用于服务器和客户端吗?不能在常规PC上运行到另一台常规PC上吗?每次我执行以下操作时,都会进入以下部分:

var collection = searcher.Get();

我得到

的错误
  

访问被拒绝。 (来自HRESULT的异常:0x80070005   (E_ACCESSDENIED))

您有想法进行这项工作吗?谢谢。

一步一步完成 按照

上的说明进行操作

https://docs.microsoft.com/en-us/windows/win32/wmisdk/connecting-to-wmi-remotely-starting-with-vista

以管理员权限键入cmd

netsh advfirewall firewall set rule group="windows management instrumentation (wmi)" new enable=yes

为了确保安全,我甚至关闭了防火墙。

编辑了我与此连接的PC的注册表:

  

HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ WBEM \ CIMOM \ AllowAnonymousCallback

           Data type

           REG\_DWORD

对于防病毒软件,我连接的电脑没有任何防病毒软件。

我仍然遇到相同的错误。

1 个答案:

答案 0 :(得分:0)

@colosso指出,您收到该错误消息是因为您没有远程主机上的权限来连接到WMI服务。

您应按照here的说明进行操作,以确保将远程主机配置为允许您的连接。