【发布时间】:2016-09-15 17:51:36
【问题描述】:
我正在尝试使用以下代码启动服务。这适用于 99% 的机器,但我在用户机器上遇到了这个问题。能够重现此错误或为什么会发生此问题的任何帮助。
ServiceController sc = new ServiceController(name);
if (sc.Status == ServiceControllerStatus.Running ||
sc.Status == ServiceControllerStatus.StartPending)
{
sc.WaitForStatus(ServiceControllerStatus.Running);
Logger.Info("Service already running");
return true;
}
sc.Start();
我收到的错误是
System.InvalidOperationException:无法在计算机上启动服务 '.'。 ---> System.ComponentModel.Win32Exception: 访问被拒绝
我正在以管理员权限运行
在创建服务时,我还运行 sc sdset 命令以使非管理员进程停止服务启动。
【问题讨论】:
-
我的错误发生在 OnAfterInstall 事件中。 var sc = new ServiceController(si.ServiceName); if (sc.Status == ServiceControllerStatus.Stopped) { sc.Start(); }
-
@KirstenGreed 你能发布堆栈跟踪吗?
-
我正在使用命令 installutil.exe myservice.exe 我如何获得堆栈跟踪?
-
我创建了一个答案,以便更好地格式化我发现的内容。
标签: c# windows windows-services