0

我正在用“C”编写服务,一旦用户尝试停止服务(使用“确定”和“取消”按钮),我想显示一个警告窗口。

是否有任何特定的 Windows API 可用于实现此目的?还有其他简单的方法可以实现吗?

4

4 回答 4

1

不,这是不可能的。Windows 服务无法直接与用户桌面交互,因此它们将无法显示任何类型的用户界面。

不过,这应该没什么大不了的。您必须拥有足够的权限才能停止和启动服务,默认情况下,只有管理员拥有这些权限。如果您不希望用户无意中停止您的服务,那么您应该利用权限为您解决该问题。

于 2012-05-12T04:36:32.310 回答
0

您使用服务控制面板停止服务;您的服务通常无权访问此控制面板进程,因此您无法覆盖它的 UI 并显示询问“确定/取消”的对话框。

于 2012-05-12T04:36:35.027 回答
0

我刚刚了解到,从服务对 UI 的任何调用都会导致它挂起。MSDN 确实有一个关于变通方法的页面。

于 2012-05-12T05:19:45.010 回答
0

如果您不希望任何人能够停止服务,只需告诉服务经理您不接受停止消息即可。相反,您可以提供一个停止服务的应用程序(使用某种形式的 IPC),并且该应用程序可以根据需要显示尽可能多的警告消息。

另一方面,这惹恼您的用户,而且这不太可能是必要的。默认情况下,只有管理员可以停止服务,人们不太可能在没有充分理由的情况下尝试停止您的服务。

于 2012-05-12T22:30:05.027 回答