C# 在windows服务中提示输入密码

C# 在windows服务中提示输入密码,c#,.net,windows,windows-services,C#,.net,Windows,Windows Services,当有人试图停止windows服务时,如何提示输入密码和用户?这无法完成 服务应该在用户体验之外运行,不处理GUI交互。这是由操作系统来允许或禁止用户停止服务的事情。这是不可能做到的 服务应该在用户体验之外运行,不处理GUI交互。这是由操作系统来允许或禁止用户停止服务的操作。这不能直接从服务中完成。但是,如果服务设置为与桌面交互,则该服务可以由另一个应用程序管理。因此,您可以使用GUI创建第二个应用程序来监视服务。当服务“停止”事件触发时,服务可以在共享状态文件中设置一些值,并等待监控应用程序在状

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

这无法完成

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

这是不可能做到的


服务应该在用户体验之外运行,不处理GUI交互。这是由操作系统来允许或禁止用户停止服务的操作。

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

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

通常,没有理由这样做。默认情况下,只有管理员可以停止服务,如果服务完全可以停止,那么要求管理员提供密码就没有意义了:他们是管理员,因此根据定义,他们有权做任何事情

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

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


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

通常,没有理由这样做。默认情况下,只有管理员可以停止服务,如果服务完全可以停止,那么要求管理员提供密码就没有意义了:他们是管理员,因此根据定义,他们有权做任何事情

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

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


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

你到底为什么要这样做?但是没有,没有直接的方法可以做到这一点,因为Windows服务没有绑定到Windows GUI。假设任何拥有停止服务所需权限的人都有管理控制权,几乎可以做任何他们想做的事情。不需要额外的密码。请检查:以错误的方式进行操作。服务应仅锁定给管理员。如果有人是他们机器上的管理员,他们应该被允许启动和停止任何他们想要的。我想作为windows服务项目来做这件事。难道没有解决办法吗?在c#你到底为什么要这样?但是没有,没有直接的方法可以做到这一点,因为Windows服务没有绑定到Windows GUI。假设任何拥有停止服务所需权限的人都有管理控制权,几乎可以做任何他们想做的事情。不需要额外的密码。请检查:以错误的方式进行操作。服务应仅锁定给管理员。如果有人是他们机器上的管理员,他们应该被允许启动和停止任何他们想要的。我想作为windows服务项目来做这件事。难道没有解决办法吗?几年前,我在c#写了一个程序,做了一些这样的事情。我看看能不能帮你找到。非常感谢。我会等的。但是如果GUI应用程序