服务启动时向Windows登录屏幕发送消息

时间:2015-08-06 01:22:00

标签: c# windows startup winlogon credential-providers

当我启动Windows 8.1笔记本电脑时,我想在Windows登录屏幕上显示一条消息,以便我知道所有服务和启动过程何时开始。除了等待几分钟,假设所有可以启动的服务都已经完成,我如何编写进程来查询“启动完成”条件,然后更新UI?

使用组策略启动脚本或在某些“服务启动”条件下触发的任务调度程序例程,是否可以检测到启动完成?我应该在事件日志中查找特定消息吗?

要向登录屏幕发送消息,我猜我需要编写Windows凭据提供程序,作为C#开发人员,我相信我应该关注PGina?

在我从头开始编写代码之前,可能已经有针对此的固定解决方案吗?

我目前正在寻找Add message to logon screen windows 7哪里通过更新注册表项我应该能够警告是否可以安全登录...一旦我找到了如何确定该条件。

[edit]删除了广泛的无关文本,并推断出我为什么要这样做。希望对简洁而专注的问题作出回应。

1 个答案:

答案 0 :(得分:1)

是的,您需要使用凭证提供程序(CP)。我对C ++和Credential Provider V1更熟悉,所以下面的术语就是从那里开始的。您可以轻松找到等效的C#代码或使用本机互操作。

对服务的检查需要在CP的SetSelected方法中。

您有两种选择 -

  1. 如果您正在等待Windows服务,请使用服务控制管理器将状态查询为“已启动”。

  2. 如果您正在等待自己的服务,请为每个服务添加“就绪”事件,并从那里触发SetEvent。在Credential Provider端,按顺序为每个服务使用WaitForSingleObject。有些服务很可能会先于其他服务开始。没关系。但是,如果您需要显示每个服务启动时指示的UI,您可以在循环中使用WaitForMultipleObjects并继续删除已发出信号的事件句柄。