我使用的C#WinForms应用程序下面的代码到远程PC启动远程服务从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; }
}
的GetServices方法,工作正常上启动Windows服务在本地PC或在指向时远程PC。然而,StartService方法只适用于我的本地PC,当在远程PC上运行时,我的访问被拒绝。在这种情况下,远程PC是同一个域上的Windows XP专业版机器,并且我正在运行应用程序的用户拥有本地管理员权限。
我不确定这是否与我的代码有关,或者我的权限不正确。
如果这是一个权限问题,请让我知道,我会尝试询问ServerFault。
感谢
首先快速测试,打开服务管理器并连接到远程PC并尝试启动所需的服务。 – 2010-07-12 08:30:59
您确定您是以管理员身份运行您的应用程序吗?你有CAS权限('ServiceControllerPermission(ServiceControllerPermissionAccess.Control)'和'SecurityPermission(PermissionState.Unrestricted)')?你应该首先检查'sc.Status == ServiceControllerStatus.Stopped'。 – 2010-07-12 08:47:06
好的服务管理器也失败了,所以我想这是ServerFault的问题,感谢您的帮助。 – Gavin 2010-07-12 12:41:32