0

当有人试图停止 Windows 服务时,我如何提示输入密码和用户?

4

3 回答 3

2

这是不可能的。

服务旨在在用户体验之外运行,并且不处理 GUI 交互。这是由操作系统决定允许或禁止用户停止服务的事情。

于 2012-06-07T19:16:24.550 回答
2

它不能直接从服务中完成。但是,如果服务设置为与桌面交互,则该服务可以由另一个应用程序管理。因此,您可以使用 GUI 来创建第二个应用程序来监控服务。当服务“停止”事件触发时,服务可以在共享状态文件中设置一些值,并等待监控应用程序在状态文件中写入确认值。也许不是你正在寻找的东西,但我认为你可以获得你想要的结果。

于 2012-06-07T19:21:54.343 回答
1

通常,没有理由这样做。默认情况下,只有管理员可以停止服务,如果服务可以完全停止,那么向管理员询问密码是没有意义的:他们是管理员,所以根据定义,他们有权做任何事情.

一种有意义的情况是,如果您希望普通用户在知道密码的情况下能够停止服务。这样,您可以让某人停止服务,而无需授予他们对计算机的管理权限。(即便如此,在大多数情况下,更改服务权限以允许相关用户有权停止服务会更简单;但也许,例如,您希望用户必须致电帮助台获得密码。)

进行这项工作的秘诀在于,服务有权以任何理由自行停止,而无需收到操作系统的停止请求。因此,您可以编写一个程序,如果用户想停止服务,他们可以运行该程序。该程序接受密码并通过某种形式的 IPC(例如命名管道)将其发送到服务。如果密码正确,服务将停止。

您还可以配置服务,使其不接受停止请求,在这种情况下,管理员还需要密码才能很好地停止服务。但这不会阻止他们通过终止服务进程或卸载服务并重新启动计算机来停止服务。

于 2012-06-07T20:18:35.853 回答