我使用的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