\

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 บางทีค่าก็ทะลุไปวันที่สองที่สามที่ผ่านมา ซึ่งเอาเป็นว่าไว้ทำเว่อร์ชั่นถัดๆไปของโปรแกรมนี้ก็แล้วกัน

โค๊ดตัวอย่าง ดังนี้ครับ
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
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;
            }
<div class="preloader"><div></div><div></div><div></div><div></div><div></div><div></div><div></div></div>

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

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

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

May be like this posts

  • สร้าง WebApp ด้วย VueJS บน Digital Ocean ตอนที่ 2 : ติดตั้ง nodejs + npm
    18/05/2018 - 0 Comments
    NodeJS คือ JavaScript framework ที่ใช้ทำ back-end ซึ่งในเคสของผม ผมเลือกเพื่อมาเป็นตัว API สำหรับให้…
  • [XAMPP] เร่งความเร็ว Apache ด้วย mod_log_config
    24/02/2015 - 0 Comments
     เคยไหมครับเวลาใช้งาน XAMPP เป็นเซิฟเว่อร์จำลอง แล้วเเต่ละ request ที่ส่งไปใช้เวลานานเหลือเกิน ตั้ง…
  • [PHP] ส่งเมลล์ผ่าน Google ด้วย PHPMailer [อัพเดต2014]
    13/11/2014 - 0 Comments
    อันดับแรกให้ไปดาว์นโหลด PHPMailer เว่อร์ชั่นล่าสุดมาก่อนครับ(ปีที่เขียน 2014) ตามลิ้งนี้…
  • [VS2017] แก้ปัญหา The operation could not be completed ตอน  add referrence
    01/03/2018 - 0 Comments
    ใครที่ใช้งาน Visual Studio ไปสักพักเเล้วงงอแงงเกิด error ประมาณนี้ “The operation could not be completed”…
  • SQL SERVER ERROR: 40 บันทึกการพังของเอสคิวแอลเซิฟเวอร์
    25/08/2014 - 0 Comments
    SQL SERVER ERROR : 40 - Could not open connection to SQL Server ใครเจอ error code 40 ในตัว SQL SERVER…
  • วิธีแก้ปัญหา lint บนโปรเจก nodejs
    15/10/2018 - 0 Comments
    เหล่าโปรเจค ตัวอย่าง ที่น่าสนใจบน github บางโปรเจคใช้ lint มาช่วยกำกับ standard…
  • [Android] Stream เสียงจาก PC บน Network ด้วย SoundWire
    23/03/2015 - 0 Comments
    ใครเคยมีประสบการณ์ จู่ๆลำโพง  Notebook ก็งอแง"เสียงแตก"ไปเฉยๆ…