コード例 #1
0
        public static DateTime GetSystemLastShutdownTime()
        {
            //string sKey = @"System\CurrentControlSet\Control\Windows";
            //Microsoft.Win32.RegistryKey key = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(sKey);

            //string sValueName = "ShutdownTime";
            //byte[] val = (byte[])key.GetValue(sValueName);
            //long valueAsLong = BitConverter.ToInt64(val, 0);
            //return DateTime.FromFileTime(valueAsLong);

            if (EventLog.Exists("System"))
            {
                var log = new EventLog("System", Environment.MachineName, "EventLog");

                var entries = new EventLogEntry[log.Entries.Count];
                log.Entries.CopyTo(entries, 0);

                var startupTimes  = entries.Where(x => x.InstanceId == 2147489653).Select(x => x.TimeWritten);
                var shutdownTimes = entries.Where(x => x.InstanceId == 2147489654).Select(x => x.TimeWritten);
                if (shutdownTimes != null && shutdownTimes.Count() != 0)
                {
                    return(shutdownTimes.Max());
                }
                else
                {
                    return(DateTime.MinValue);
                }
            }
            else
            {
                return(DateTime.MinValue);
            }
        }
コード例 #2
0
        /// <summary>
        /// Accepts an Event Log Name and log level. Returns all log entries for that Event Log and level
        /// The default log (if none is specified) is the Application log and default log level is FailueAudit
        /// </summary>
        /// <param name="eventLogName">Name of the event log.</param>
        /// <param name="logType">Type of the log.</param>
        /// <param name="onlyEventsEqualTo"></param>
        /// <returns>List<EvengLogEntry /> EventList</returns>
        public static List <EventLogEntry> GetEvents <T>(string eventLogName = "Application", EventLogEntryType logType = EventLogEntryType.FailureAudit, bool onlyEventsEqualTo = false)
        {
            int num = 0;

            EventLog = new EventLog
            {
                Log = eventLogName
            };
            EventLogEntryCollection entries = EventLog.Entries;

            EventLogEntry[] array = new EventLogEntry[entries.Count];
            try
            {
                foreach (EventLogEntry item in entries)
                {
                    int entryType = (int)item.EntryType;
                    switch (onlyEventsEqualTo)
                    {
                    case false:
                        if (entryType <= (int)logType)
                        {
                            array[num] = item;
                            num++;
                        }
                        break;

                    case true:
                        if (entryType == (int)logType)
                        {
                            array[num] = item;
                            num++;
                        }
                        break;
                    }
                }
            }
            catch (Exception)
            {
            }
            return(array.Where((EventLogEntry rec) => rec != null).ToList());
        }
コード例 #3
0
        public static void GenerateFile(string filename, string logName)
        {
            Console.WriteLine($"Getting event logs for {logName}");

            File.AppendAllLines(filename, new[] {
                $"{"LEVEL", -20} {"DATE", -25} {"Source", -30} {"EventID", -8} MESSAGE"
            });

            using (var eventLog = new EventLog(logName))
            {
                EventLogEntry[] entries = new EventLogEntry[eventLog.Entries.Count];
                eventLog.Entries.CopyTo(entries, 0);

                foreach (EventLogEntry entry in entries.Where(e => e.TimeGenerated > DateTime.Today.AddDays(-60)).OrderBy(e => e.TimeGenerated))
                {
                    File.AppendAllLines(filename, new[] {
                        $"{entry.EntryType,-20} {entry.TimeGenerated,-25} {entry.Source,-30} {entry.InstanceId,-8} {entry.Message}"
                    });
                }
            }
        }