在Windowsclosures时返回“null”的RegisterEventSource方法

我在服务停止期间调用了RegisterEventSource()函数。 但在系统closures期间它将返回null。 这种行为有什么理由吗?

错误:我在GetLastError()上得到错误代码0x800706b5当谷歌search,我知道它有一些与丢失的registry数据。

另外,如何检查系统关机是否已经开始? (即相当于C#中的HasShutdownStarted())

服务可以指定在系统关闭时是否通知他们。 用SERVICE_ACCEPT_SHUTDOWN标志调用SetServiceStatus()。 您将在您的服务控制消息处理程序中收到SERVICE_CONTROL_SHUTDOWN消息。

编辑:如果确实如Zach所说,你与RegisterEventSource的问题是因为事件服务已经关闭,做你的事件日志写入响应这个通知也可以解决这个问题。

我只能猜测为什么RegisterEventSource会在系统关闭时返回null,因为我从来没有这种行为。 [免责声明:我很久以前离开了我的Win32编程日子,现在是100%的.NET]。

我也无法找到任何.h文件中的错误代码0x800706b5我可以从最新的SDK访问。

在系统关闭期间,您的服务可能是Windows事件服务已经关闭吗?

您可以尝试设置您的服务和Windows事件服务之间的依赖关系。 这应该确保在系统关闭期间,您的服务将首先关闭。 具有讽刺意味的是,如何做到这一点,我发现最好的建议是从Adobe: 如何创建Windows服务之间的依赖关系 。