\

Facebook


วันอังคารที่ 6 พฤษภาคม พ.ศ. 2557

C# EventLog Viewer part II รู้หมด! ใครแอบมาใช้คอมเรา ภาคสอง


จากที่เคยแนะนำเรื่อง ดูการใช้งานล่าสุดใน EventLog ที่เราต้องเปิด Event Viewer ขึ้นมาเพื่อ เลือกดู log ย้อนหลัง เมื่อเราอยากรู้ว่าครั้งสุดท้ายที่เข้าใช้เป็นเวลากี่โมง เพื่อดักจับนั่นแหละว่าใครแอบมาใช้คอมเราไหม ตอนที่เราไม่ได้อยู่ ซึ่ง tool ที่ Microsoft คิดมานี้ ก็ละเอียดดีครับ แต่เป้าหมายเราคือดู Log สุดท้าย ไม่ได้ Log ทั้งหมด

เลยคิดเล่นๆว่าเขียนโปรแกรม แสดง Event Log สุดท้ายก่อนเมื่อวานนี้ก่อนที่เราจะ Shut down ดีกว่า จะได้รู้ว่าเวลาสุดท้ายที่เกิดการ Run Application นั้นเป็นเวลากี่โมง ซึ่งจะคิดเป็นวันต่อวันตามหลักการคนออฟฟิต นั่นคือ เริ่มงาน 8 โมง ถึงประมาณ 5 โมง หรืออาจถึง 4 ทุ่ม ซึ่งคิดเป็นวันต่อวันนั่นแหละ
นั่นหมายความว่าถ้าผม Shutdown เครื่องตอน 6 โมง แล้วกลับมาใช้คอมใหม่วันรุ่งขึ้น ผมจะสามารถอ่าน Event Log ล่าสุดของเมื่อวานได้ 6  โมงตรง ซึ่งเป็นเวลาที่ผม Shutdown เครื่องพอดิบพอดี ถ้า เวลาที่อ่านได้ มากไปกว่านี้ เช่น 1 ทุ่ม แสดงว่าผมลืม Shutdown หรือ อาจเพราะว่ามีคนเข้ามาใช้เครื่องคอมพิวเตอร์

หลักการก็ง่ายๆ ใน logic ของ โปรแกรม อธิบายสั้นๆคือ อ่าน Log มาจากระบบนั่นแหละ ซึ่งมีอยู่ด้วยกัน 3 ประเภทหลักๆ ได้แก่ Information, Warning, Error ซึ่งผมจะอ่านเอา Information เพราะเกิดจาก Service ต่างๆที่รันบนเครื่อง ตั้งแต่เปิดยันปิด ทำให้ได้ข้อมูลเวลาที่แม่นยำกว่า จากนั่นก็เรียงตามเวลาที่เกิดล่าสุดไป แล้วเทียบเวลาไปด้วย เมื่อไหร่ที่ Log อ่านพบว่ามีการขึ้นวันใหม่ จากค่าวันที่ที่อ่านได้แตกต่างกัน เช่น 17/7/2557 กับ 16/7/2557 แสดงว่าเป็นล็อกสุดท้ายที่เกิดในวันนั่น ผมก็เอามาแสดงที่ข้อความด้านขวา

เพิ่มเติม ผมตั้ง limit ไว้ 1000 เพราะคิดว่าใน 1 วันไม่น่าเกินจากนี้ ท่านสามารถ เพิ่มได้หรือลดได้ เพื่อประให้อ่านค่าได้ถูกต้อง เช่นเพิ่งเปิดเครื่องก็อาจเลือกที่ 100 ก็ได้ เพราะ 1000 บางทีค่าก็ทะลุไปวันที่สองที่สามที่ผ่านมา ซึ่งเอาเป็นว่าไว้ทำเว่อร์ชั่นถัดๆไปของโปรแกรมนี้ก็แล้วกัน

โค๊ดตัวอย่าง ดังนี้ครับ
private void getEventLog(object obj)
        {
            ClearText();
            listView1.Items.Clear();
            foreach (EventLog log in eventLog)
            {
                DateTime date = DateTime.Now;
                int count = int.Parse(this.txtCount.Text);
                int coun = 0;
                for (int i = log.Entries.Count - 1; i > log.Entries.Count - count ; i--)
                {
                    coun++;
                    if (i == -1) return;
                    var entry = log.Entries[i];
                    ListViewItem item;
                    item = new ListViewItem(coun.ToString());
                    item.SubItems.Add(entry.Source.ToString());
                    if (checkDate.Checked)
                    {
                        if (!dateTimePicker1.Value.Date.Equals(entry.TimeGenerated.Date))
                            continue;
                    }
                    else
                    {
                        if (date.Date > entry.TimeGenerated.Date)
                        {
                            date = entry.TimeGenerated.Date;
                            item = new ListViewItem(new string[] { entry.Source.ToString() }, "0", Color.Black, Color.Red, new Font(FontFamily.GenericSansSerif, (float)10.0));

                            txtName.Text = entry.Source.ToString();
                            txtTime.Text = entry.TimeGenerated.ToString();
                            txtType.Text = entry.EntryType.ToString();
                        }
                    }
                    if (checkType.Checked)
                    {
                        if (!entry.EntryType.ToString().Equals(comboType.SelectedItem.ToString()))
                            continue;
                    }

                    item.SubItems.Add(entry.EntryType.ToString());
                    item.SubItems.Add(entry.TimeGenerated.ToString());
                    item.SubItems.Add(entry.Message.ToString());
                    item.SubItems.Add(entry.MachineName.ToString());

                    listView1.Items.Add(item);
                    //Console.WriteLine(entry.TimeWritten);
                }
                Console.WriteLine("Count : " + coun);
                return;
            }

ดาว์นโหลดโปรแกรมได้ที่
Download EventLogViewerClick Here 

Name : EventLog Viewer
Type : Freeware v.1.00
Developer : Chin Chayut

ไม่มีความคิดเห็น:

May be like this posts