Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用C获取上次关机时间#_C# - Fatal编程技术网

C# 如何使用C获取上次关机时间#

C# 如何使用C获取上次关机时间#,c#,C#,我有一个应用程序,需要获取上次关机时间。我使用EventLog类来获取关机时间。我有单独的类文件,用于读/写事件日志。ReadPowerOffEvent函数用于获取断电事件 public void ReadPowerOffEvent() { EventLog eventLog = new EventLog(); eventLog.Log = logName; eventLog.MachineName = machineName;

我有一个应用程序,需要获取上次关机时间。我使用EventLog类来获取关机时间。我有单独的类文件,用于读/写事件日志。ReadPowerOffEvent函数用于获取断电事件

public void ReadPowerOffEvent()
    {
        EventLog eventLog = new EventLog();
        eventLog.Log = logName;
        eventLog.MachineName = machineName;

        if (eventLog.Entries.Count > 0)
        {
            for (int i = eventLog.Entries.Count - 1; i >= 0; i--)
            {
                EventLogEntry currentEntry = eventLog.Entries[i];

                if (currentEntry.InstanceId == 1074 && currentEntry.Source=="USER32")
                {
                    this.timeGenerated = currentEntry.TimeGenerated;
                    this.message = currentEntry.Message;
                }
            }
        }
    }
但每当它试图获取事件条目计数时,就会抛出一个IOException,表示“未找到网络路径”。我试图解决,但失败了。请帮我解决…

您必须在您的计算机(或要运行此应用的计算机)上运行“远程注册表”服务。我怀疑这项服务在您的机器上设置为手动启动。您可能必须将此服务的设置更改为自动

如果此应用程序将在其他计算机上运行,您可能需要在应用程序中加入一些逻辑,以检查是否首先运行此服务。如果不是,那么你需要通过你的应用程序启动它

注:

“远程注册表”服务允许远程用户修改您计算机上的注册表设置。默认情况下,“远程注册表”服务的“启动类型”设置可以设置为“自动”或“手动”,这对单个用户(或)笔记本电脑用户来说是一种安全风险。 因此,为了确保只有计算机上的用户可以修改系统注册表,请禁用此“远程注册表”服务

您必须在您的计算机(或要运行此应用的计算机)上运行“远程注册表”服务。我怀疑这项服务在您的机器上设置为手动启动。您可能必须将此服务的设置更改为自动

如果此应用程序将在其他计算机上运行,您可能需要在应用程序中加入一些逻辑,以检查是否首先运行此服务。如果不是,那么你需要通过你的应用程序启动它

注:

“远程注册表”服务允许远程用户修改您计算机上的注册表设置。默认情况下,“远程注册表”服务的“启动类型”设置可以设置为“自动”或“手动”,这对单个用户(或)笔记本电脑用户来说是一种安全风险。 因此,为了确保只有计算机上的用户可以修改系统注册表,请禁用此“远程注册表”服务


我想你发错了日志名,这对我有用

EventLog myLog = new EventLog();
myLog.Log = "System";
myLog.Source = "User32";

var lastEntry = myLog;
EventLogEntry sw;
for (var i = myLog.Entries.Count -1 ; i >=0; i--)
{
    if (lastEntry.Entries[i].InstanceId == 1074)
        sw = lastEntry.Entries[i];
        break;
    }
}

我想你发错了日志名,这对我有用

EventLog myLog = new EventLog();
myLog.Log = "System";
myLog.Source = "User32";

var lastEntry = myLog;
EventLogEntry sw;
for (var i = myLog.Entries.Count -1 ; i >=0; i--)
{
    if (lastEntry.Entries[i].InstanceId == 1074)
        sw = lastEntry.Entries[i];
        break;
    }
}

您可以使用[this answer][1]来确定使用WMI的正常运行时间。[1] :我想这个老问题对你有帮助。@Kane,我已经在我的应用程序中做了这个系统启动时间的事情。我的问题是获取电脑上次关机的时间,并检测它是关机事件还是重新启动,并计算关机时间。这就是为什么我需要使用EventViewer。不管怎样,谢谢,“机器名”有点问题。可能已关闭?您可以使用[this answer][1]来确定使用WMI的正常运行时间。[1] :我想这个老问题对你有帮助。@Kane,我已经在我的应用程序中做了这个系统启动时间的事情。我的问题是获取电脑上次关机的时间,并检测它是关机事件还是重新启动,并计算关机时间。这就是为什么我需要使用EventViewer。不管怎样,谢谢,“机器名”有点问题。可能是关机了?