Как перезапустить службу удаленно?

Я могу запустить или остановить сервис удаленно из проекта .net.

ConnectionOptions options = new ConnectionOptions();
options.Username = @"192.168.36.22\test";
options.Password = "test";
ManagementScope scope = new ManagementScope(@"\\192.168.36.22\root\cimv2", options);
scope.Connect();


ManagementOperationObserver Stop = new ManagementOperationObserver();
Stop.Completed += new CompletedEventHandler(Stop_CallBack);
try
{
    string NameServices = "ArcGIS Server";
    WqlObjectQuery query = new WqlObjectQuery("SELECT * FROM Win32_Service  WHERE Name=\"" + NameServices + "\"");
    ManagementObjectSearcher find = new ManagementObjectSearcher(scope, query);
    foreach (ManagementObject spooler in find.Get())
    {
        spooler.InvokeMethod("StopService", new object[] { });
        spooler.InvokeMethod(Start, "StopService", new object[] { });
    }
 }
....

Как перезапустить эту службу?

Ответ 1

Вы можете использовать класс ServiceController следующим образом:

ServiceController sc = new ServiceController("ArcGIS Server", "192.168.36.22");

sc.Start();
sc.Stop();

Это избавит вас от необходимости писать весь этот код для взаимодействия с WMI. Обратите внимание, что для использования класса ServiceController вам необходимо добавить ссылку на сборку System.ServiceProcess.

Ответ 2

У меня возникла аналогичная проблема, когда я пытался подключиться, просто добавьте свое имя компьютера в качестве администратора в группу пользователей целевой машины, и вы сможете получить данные.