我正在用“C”编写服务,一旦用户尝试停止服务(使用“确定”和“取消”按钮),我想显示一个警告窗口。
是否有任何特定的 Windows API 可用于实现此目的?还有其他简单的方法可以实现吗?
我正在用“C”编写服务,一旦用户尝试停止服务(使用“确定”和“取消”按钮),我想显示一个警告窗口。
是否有任何特定的 Windows API 可用于实现此目的?还有其他简单的方法可以实现吗?
不,这是不可能的。Windows 服务无法直接与用户桌面交互,因此它们将无法显示任何类型的用户界面。
不过,这应该没什么大不了的。您必须拥有足够的权限才能停止和启动服务,默认情况下,只有管理员拥有这些权限。如果您不希望用户无意中停止您的服务,那么您应该利用权限为您解决该问题。
您使用服务控制面板停止服务;您的服务通常无权访问此控制面板进程,因此您无法覆盖它的 UI 并显示询问“确定/取消”的对话框。
我刚刚了解到,从服务对 UI 的任何调用都会导致它挂起。MSDN 确实有一个关于变通方法的页面。
如果您不希望任何人能够停止服务,只需告诉服务经理您不接受停止消息即可。相反,您可以提供一个停止服务的应用程序(使用某种形式的 IPC),并且该应用程序可以根据需要显示尽可能多的警告消息。
另一方面,这会惹恼您的用户,而且这不太可能是必要的。默认情况下,只有管理员可以停止服务,人们不太可能在没有充分理由的情况下尝试停止您的服务。