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

Message to Windows logon screen when services started

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

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

要向登录屏幕发送消息,我想我需要编写一个 Windows 凭据提供程序,作为 C# 开发人员,我认为我应该看看 PGina?

在我开始从头开始编写代码之前,是否已经有针对此问题的固定解决方案?

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


[edit] 删除了大量不相关的文本,并说明我为什么要这样做。希望对一个简洁而有针对性的问题做出回应。

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

Services的检查需要在CP的SetSelected方法中。

你有两个选择 -

  1. 如果您正在等待 Windows 服务,请使用服务控制管理器查询状态 "Started"。

  2. 如果您正在等待自己的服务,请向每个服务添加一个 "ready" 事件并从那里触发 SetEvent。在 Credential Provider 端,依次为每个服务使用 WaitForSingleObject。某些服务很可能会先于其他服务启动。没关系。但是,如果您需要在每个服务启动时显示一个 UI 指示,您可以在循环中使用 WaitForMultipleObjects 并继续删除收到信号的事件句柄。