我知道有类似的问题已被提出,但我没有听到任何具体的问题,所以请在下载之前阅读:
我有一个程序可以在计算机关闭时关闭UPS。由于我希望UPS继续进行重启,如何判断事件是否已关闭(计算机实际上是否已关机),或者是否重启?
这标记为重复,不是案例。
我没有尝试在注销和关闭之间确定。我试图确定是否正在关闭并重新启动,这标记在文章中。
答案 0 :(得分:0)
经过一些研究,我确实找到了一个可用的"回答这个......
似乎没有直接的方式,但您可以通过读取事件日志间接确定关闭类型。以下是执行此操作的方法:
private void readEventLogs()
{
string query = "*[System/EventID=1074]";
EventLogQuery elq = new EventLogQuery("System", PathType.LogName, query);
EventLogReader elr = new EventLogReader(elq);
EventRecord entry;
while ((entry = elr.ReadEvent()) != null)
{
if (entry.TimeCreated.HasValue && entry.TimeCreated.Value.AddMinutes(1) > DateTime.Now)
{
string xml = entry.ToXml();
if (xml.ToLower().Contains("restart"))
{
System.IO.File.WriteAllLines(@"C:\shutdown.txt", new string[] { "RESTART" });
}
else if (xml.ToLower().Contains("power off"))
{
System.IO.File.WriteAllLines(@"C:\shutdown.txt", new string[] { "SHUT DOWN" });
}
}
}
}
这会循环显示所有关闭事件,并找到最后一分钟内发生的事件。由于您不可能在最后一分钟关闭两次以上,这应该是您的参赛作品。
该条目包含大量信息,但我所关心的定义是它表示"重启"或者"断电"。关于这些,我通过写出一个发生的文本文件来测试。
由于这些是事件日志,因此可能会受到本地化的影响。