如何在 Windows 服务上设置权限

本文关键字:设置 权限 服务 Windows | 更新日期: 2023-09-27 18:31:22

所以我使用C#创建了一个Windows服务,并在Visual Studio中为它创建了一个安装程序。它设置为手动运行,因为我不希望它一直运行。然后,我有另一个应用程序(C# WPF),该应用程序应该具有打开和关闭服务的选项(服务本身创建一个 Web 服务,该服务又与我的 WPF 应用程序通信)。这在Windows XP中工作正常,但是在Windows 7计算机上测试它,它不会启动。令人惊讶的是,它确实抛出了异常和崩溃,它什么也没做。我相信这是一个权限问题。如果我使用相同的 Windows 7 帐户转到服务控制面板,我也无法启动或停止该服务。

所以我的问题是,有没有办法设置我的服务,以便普通用户帐户可以启动和停止它?有没有办法将我的安装程序设置为自动执行此操作。

我不希望我的 WPF 应用程序以管理员身份运行!

如何在 Windows 服务上设置权限

虽然我相信可以保护服务,以便普通用户可以启动和停止它,但我不建议这样做。这将造成很多复杂情况,并且是造成混乱的潜在原因。我总是喜欢保持简单,尤其是在安装和安全性方面。

因此,如果我们不能让用户启动和停止服务,我们可能需要让服务一直运行。由于您不希望服务一直处于活动状态,因此我建议您为服务提供自己的内部Running标志。如果设置为 true,则服务处于活动状态并执行繁忙的操作,否则服务将保持空闲状态。可以使用首选的 IPC 机制(套接字、命名管道、WCF 等)来允许用户切换此开关。

Windows 8具有允许服务按需启动的功能,基本上是为了响应某种触发器。但是对于Windows 7,您唯一真正的选择是将其设置为在启动时自动启动。 您可以将其设置为延迟启动,这样它就不会增加窗口启动所需的时间。

普通用户无法启动和停止服务。

编辑:阅读上面评论中的链接对我来说听起来像是用户启动和停止服务的全面能力。 我认为这里的问题是关于如何为特定服务执行此操作。

此外,虽然可以将服务设置为以该特定用户身份

运行,但这实际上意味着它仅适用于该特定用户,工作站上的其他用户将无法使用该应用程序,因为他们无法启动或停止服务,假设以用户身份运行的服务意味着用户可以控制它, 事实可能并非如此。

同样在阅读评论和其他答案时,我想知道该服务是否可以被任何可以运行该应用程序的用户使用。 也就是说,如果用户 A 登录到工作站并启动此应用(以及服务),将其锁定并离开,则在使用 B 登录并尝试运行同一服务时会发生什么情况? 该服务是否可以同时支持多个用户,或者如果服务被多次运行的应用程序使用,有趣的事情会开始发生。

这听起来确实像是在应用程序启动时启动后台。 此线程(或多个线程)将执行服务的工作,并且根据其性质将在应用程序结束时结束。 当然,问题中的更多细节将有助于给出更好的答案。

当然,如果它适合作为服务,我认为没有理由不让一个服务有一个休眠的工作线程,另一个计时器线程充当生产者来检查是否有工作要做。