我有一個Windows服務MyService(以C#實現)作爲NetworkService運行。 MyService需要啓動另一個也作爲NetworkService運行的第三方服務ItsService。嘗試使用該代碼爲MyService試圖何時開始TheirService失敗,拒絕訪問錯誤:從另一個服務重新啓動NetworkService服務
public static bool StartService(string serviceName, TimeSpan timeout)
{
bool started = false;
try
{
using (ServiceController sc = new ServiceController(serviceName))
{
if (sc != null)
{
sc.Refresh();
if (sc.Status == ServiceControllerStatus.Running)
{
// Stop service
Trace.TraceInformation("Util.StartService Stopping service '{0}'...", serviceName);
sc.Stop();
}
sc.WaitForStatus(ServiceControllerStatus.Stopped, timeout);
sc.Refresh();
// Start service
Trace.TraceInformation("Util.StartService Starting service '{0}'...", serviceName);
sc.Start();
sc.WaitForStatus(ServiceControllerStatus.Running, timeout);
sc.Refresh();
started = (sc.Status == ServiceControllerStatus.Running);
}
}
}
catch (Exception e)
{
Trace.TraceError("Util.StartService Exception occurred while starting service '{0}'.\n{1}\n{2}", serviceName, e.Message, e.StackTrace);
}
Trace.TraceInformation("Util.StartService Service '{0}' restarted? {1}", serviceName, started);
return started;
}
TheirService的SID信息:
C:\>sc showsid TheirService
NAME: TheirService
SERVICE SID: S-1-5-80-3034156332-2544749427-1608259134-1317875859-4063208518
有沒有從爲MyService從C#開始TheirService編程方式?
編輯:目標 - 作爲MyService安裝的一部分,我希望能夠重新啓動他們的服務。
他們的服務可以修改嗎?如果是這樣,你可以實現你想要的 – Learner 2012-07-26 21:48:22
@Cristi不幸的是不是。他們的服務是第三方服務。 – amo 2012-07-26 22:19:17