gpt4 book ai didi

c# - 在 C# 中获取 Windows Server 关闭原因

转载 作者:可可西里 更新时间:2023-11-01 11:15:09 24 4
gpt4 key购买 nike

是否可以在用户在对话窗口中选择原因后立即在 Windows Server 2008 中获取关机原因?对于关闭事件,我使用的是 SystemEvents.SessionEnding。我想编写 windows 服务,它将发送有关此事件的电子邮件。

或者在 Windows 服务器中是否有任何其他方式发送有关关闭/重启事件的电子邮件并获取用户输入的原因?另外,我想通知电源变化(电线/电池),但我已经通过 Kernel32.dll > GetSystemPowerStatus 解决了这个问题。

最佳答案

您可以通过检查 EventLog 获取关机原因。

我在 Windows 窗体上组装了一个快速演示,您可以将其适应您的 Windows 服务。

我已将 EventLog 组件添加到表单并正确配置它。下面的代码片段显示了在 InitializeComponent() 中为我通过设计器完成的设置生成的代码。


this.eventLog1.EnableRaisingEvents = true;
this.eventLog1.Log = "System";
this.eventLog1.Source = "USER32";
this.eventLog1.SynchronizingObject = this;
this.eventLog1.EntryWritten += new System.Diagnostics.EntryWrittenEventHandler(this.eventLog1_EntryWritten);

在事件处理程序上,您将拥有以下内容:


private void eventLog1_EntryWritten(object sender, System.Diagnostics.EntryWrittenEventArgs e)
{
EventLogEntry entry = e.Entry;
if (e.Entry.EventID == 1074)
{
File.AppendAllText(@"c:\message.txt", entry.Message);
}
}

查看您的事件日志以查看要过滤掉的适当 EventId。

编译器会警告你 EventID 被弃用并告诉你你应该使用 InstanceId,但在我在这里做的快速测试中,它没有写入我的日志文件,我认为我们已经有足够的信息来让你走上正轨。

关于c# - 在 C# 中获取 Windows Server 关闭原因,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1315858/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com