ความเข้าใจในความท้าทาย
คุณเคยต้องการหาว่าผู้ใช้ล็อกอินใน Windows มานานแค่ไหน โดยเฉพาะเมื่อคุณกำลังพัฒนาซอฟต์แวร์ที่ต้องการข้อมูลนี้หรือไม่? ถ้าใช่ คุณไม่ใช่คนเดียว ขณะที่การตรวจสอบระยะเวลาของเซสชั่นผู้ใช้อาจดูเหมือนจะง่าย แต่หลาย ๆ นักพัฒนาประสบปัญหาในการหา API function ที่ตรงไปตรงมาสำหรับการทำเช่นนี้
ในบล็อกโพสต์นี้ เราจะสำรวจวิธีการระบุว่าผู้ใช้ปัจจุบันได้เข้าสู่ระบบ Windows Vista นานแค่ไหน และให้ตัวอย่างที่เป็นประโยชน์โดยใช้ WMI Queries และ Visual Basic Script (VBS)
ขาด API ที่ตรงไปตรงมา
อุปสรรคแรกที่นักพัฒนาหลายคนประสบคือการไม่มี API function ที่ตรงไปตรงมาซึ่งสามารถให้ข้อมูลระยะเวลาการล็อกอินได้อย่างง่ายดาย นอกจากนี้ ในขณะที่ Windows Management Instrumentation (WMI) อาจเป็นโซลูชันที่แข็งแกร่ง แต่ผู้ที่ไม่คุ้นเคยกับมันอาจรู้สึกท่วมท้น ส่งผลให้พลาดศักยภาพของมัน
ภาพรวมของโซลูชัน
เพื่อแก้ไขปัญหานี้ เราสามารถใช้ WMI ในการสอบถามคลาส Win32_Session
ซึ่งเก็บรายละเอียดเกี่ยวกับเซสชั่นของผู้ใช้ รวมถึงเวลาที่เริ่มต้น ในส่วนนี้เราจะอธิบายวิธีการตั้งค่าในลักษณะที่เข้าใจง่าย
การตั้งค่า WMI
ทรัพยากรที่เป็นประโยชน์
ก่อนที่เราจะลงไปในโค้ด การทำความคุ้นเคยกับทรัพยากรหลักบางประการเกี่ยวกับ WMI ช่วยให้คุณเข้าใจมากขึ้น:
- หน้า MSDN เกี่ยวกับการใช้ WMI กับภาษาอื่น ๆ
- เอกสารอ้างอิงสำหรับ Win32_Session
- เอกสารสำหรับ Win32_LogonSession
- เครื่องมือ WMI Explorer - ใช้เครื่องมือนี้เพื่อสำรวจและรัน queries บนคลาส WMI ได้อย่างง่ายดาย
ตัวอย่างโค้ดสำหรับการถามค้นหา Win32_Session
เพื่อให้ได้ระยะเวลาการล็อกอินของผู้ใช้ปัจจุบัน คุณสามารถเขียนสคริปต์ VBS ง่าย ๆ นี่คือตัวอย่างโค้ดที่แสดงให้เห็น:
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" _
& strComputer & "\root\cimv2")
Set sessions = objWMIService.ExecQuery _
("select * from Win32_Session")
For Each objSession in sessions
Wscript.Echo objSession.StartTime
Next
การกรองเซสชั่น
หลังจากที่รันโค้ด คุณอาจสังเกตเห็นว่ามันส่งคืนหลายเซสชั่น เพื่อมุ่งเน้นไปที่ผู้ใช้ที่โต้ตอบ คุณสามารถใช้การกรองตามคุณสมบัติ LogonType
ของวัตถุเซสชันได้ ด้วยวิธีนี้ คุณสามารถแยกแยะเซสชั่นที่สำคัญที่สุดสำหรับแอปพลิเคชันของคุณออกมาได้
ทรัพยากรเพิ่มเติม
หากคุณกำลังมองหาข้อมูลเพิ่มเติมหรือวิธีแก้ไขปัญหา คุณสามารถเข้าร่วมการสนทนานี้ใน Sysinternals Forum การมีส่วนร่วมกับชุมชนสามารถนำไปสู่ความเข้าใจหรือวิธีแก้ปัญหาเพิ่มเติมอยู่เสมอ
บทสรุป
การตรวจสอบว่าผู้ใช้ล็อกอินใน Windows นานแค่ไหนอาจดูเหมือนเป็นงานที่ท้าทาย แต่ด้วยการใช้ WMI และ VBS งานนี้จะสามารถจัดการได้ ไม่ว่าคุณจะกำลังพัฒนาแอปพลิเคชันที่ติดตามกิจกรรมของผู้ใช้ หรือเพียงแค่ต้องการรายละเอียดเพื่อวัตถุประสงค์ด้านการบริหาร ข้างต้นนี้สามารถให้ข้อมูลที่คุณต้องการได้
ใช้โซลูชันนี้ในแอปพลิเคชันของคุณ แล้วคุณจะอยู่ในเส้นทางที่ดีต่อการติดตามเซสชั่นผู้ใช้ใน Windows มากขึ้นได้.