我有一个作为 NetworkService 运行的 Windows 服务 MyService(用 C# 实现)。MyService 需要启动另一个第三方服务 TheyService,它也作为 NetworkService 运行。尝试使用以下代码从 MyService 尝试启动 TheyService 失败并出现访问被拒绝错误:
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;
}
他们的服务的 SID 信息:
C:\>sc showsid TheirService
NAME: TheirService
SERVICE SID: S-1-5-80-3034156332-2544749427-1608259134-1317875859-4063208518
有没有办法从 C# 以编程方式从 MyService 启动TheyService?
编辑:目标 - 作为 MyService 安装的一部分,我希望能够重新启动 TheyService。