我编写了一个安装程序,用于安装需要启动/停止另一个服务 (B) 的 Windows 服务 (A)。但是,当 A 尝试启动/停止 B 时,我得到了这个异常:
System.InvalidOperationException:无法在计算机“.”上打开 MyService 服务。---> System.ComponentModel.Win32Exception:访问被拒绝
安装程序将该服务安装为本地服务,并通过我授予的 UAC 弹出窗口请求管理员权限。我还向设置为请求管理员权限的服务添加了一个 app.manifest 文件:
但是我仍然遇到这个错误。
这就是我启动服务的方式(停止是相同的,当然,它调用停止):
using (Mutex mutex = new Mutex(false, "MyServiceLock"))
{
mutex.WaitOne();
if (ServiceExists(serviceName) == true)
{
using (ServiceController serviceController = new ServiceController(serviceName, "."))
{
serviceController.Start(); // this line throws the exception
}
}
mutex.ReleaseMutex();
}
为什么会拒绝访问此服务?