ich in einer C# WinForms-Anwendung des folgenden Code bin mit Windows-Dienste auf einem entfernten PC startenStart A Remote Service von C#
public static List<Service> GetServices()
{
List<Service> Services = new List<Service>();
ServiceController[] sc = ServiceController.GetServices(Server);
foreach (var s in sc)
{
Services.Add(new Service { Name = s.ServiceName, Running = s.Status == ServiceControllerStatus.Running });
}
return Services;
}
public static bool StartService(string ServiceName)
{
try
{
ServiceController sc = new ServiceController(ServiceName, Server);
sc.Start();
sc.WaitForStatus(ServiceControllerStatus.Running, new TimeSpan(0, 0, 10));
sc.Refresh();
return sc.Status == ServiceControllerStatus.Running;
}
catch(Exception ex) { return false; }
}
Die GetServices Methode funktioniert gut, wenn bei meinem lokalen PC oder an der Zeige Remote-PC. Die StartService-Methode funktioniert jedoch nur auf meinem lokalen PC. Wenn sie auf dem Remote-PC ausgeführt wird, wird der Zugriff verweigert. In diesem Fall ist der Remote-PC ein Windows XP Pro-Computer in derselben Domäne und der Benutzer, unter dem ich die App ausführe, hat lokale Administratorrechte.
Ich bin mir nicht sicher, ob dies ein Problem mit meinem Code ist oder ob meine Berechtigungen nicht korrekt sind.
Wenn dies ein Problem mit Berechtigungen ist, lassen Sie es mich wissen und ich werde versuchen, auf ServerFault zu fragen.
Dank
Erster Schnelltest, öffnen Sie den Services Manager und stellen Sie eine Verbindung zum entfernten PC her und versuchen Sie, den erforderlichen Dienst zu starten. –
Sind Sie sicher, dass Sie Ihre Anwendung als Administrator ausführen? Haben Sie CAS-Berechtigungen ('ServiceControllerPermission (ServiceControllerPermissionAccess.Control)' und 'SecurityPermission (PermissionState.Unrestricted)')? Sie sollten zuerst überprüfen, ob 'sc.Status == ServiceControllerStatus.Stopped' ist. –
Ok der Service Manager schlägt fehl, also denke ich, das ist eine Frage für ServerFault, danke für die Hilfe. – Gavin