gpt4 book ai didi

.net - 如何安装以管理员身份运行的 Windows 服务?

转载 作者:行者123 更新时间:2023-12-04 23:09:41 24 4
gpt4 key购买 nike

我编写了一个安装程序,用于安装需要启动/停止另一个服务 (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();
}

为什么可能会拒绝访问此服务?

最佳答案

服务不能要求 UAC 提升。在我看来,您描述的 UAC 提示实际上是由安装程序而不是服务请求的。服务通常已经使用非常特权的帐户运行,默认情况下为 LocalSystem。请确保您将服务配置为使用此类特权帐户,而不是受限用户帐户。

关于.net - 如何安装以管理员身份运行的 Windows 服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3755051/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com