2009-10-06 18 views
5
using Microsoft.Win32; 

public class App 
{ 
    static void Main() 
    { 
    SystemEvents.SessionSwitch += SystemEvents_SessionSwitch; 
    Console.ReadLine(); 
    SystemEvents.SessionSwitch -= SystemEvents_SessionSwitch; 
    } 

    static void SystemEvents_SessionSwitch(object sender, SessionSwitchEventArgs e) 
    { 
    if(e.Reason == SessionSwitchReason.SessionLock) 
    { 
    Console.WriteLine("locked at {0}", DateTime.Now); 
    } 
    if(e.Reason == SessionSwitchReason.SessionUnlock) 
    { 
    Console.WriteLine("unlocked at {0}", DateTime.Now); 
    } 
} 

Tôi đã tạo dịch vụ Windows. Khi tôi khởi động lại hệ thống và đăng nhập, đăng xuất, khóa hoặc mở khóa phiên. nó sẽ không nắm bắt được sự kiện. Dịch vụ đang chạy, nhưng nó sẽ không hoạt động đúng cách.Làm cách nào để ghi lại các sự kiện đăng nhập, đăng xuất, khóa và mở khóa Windows một cách đáng tin cậy từ một dịch vụ?

Khi tôi khởi động lại dịch vụ, nó sẽ nắm bắt tất cả các sự kiện như mong đợi. Tôi làm cách nào để khắc phục sự cố/sửa lỗi này?

+0

Và bạn đang cố gắng cho chúng tôi biết điều đó ... Vui lòng chỉ định "nó sẽ không hoạt động" thêm một chút nữa ... làm thế nào nó không hoạt động? Nó làm gì? Nó sẽ làm gì? –

+0

Bạn đang cố gắng nhắm mục tiêu phiên bản nào của Windows? Các sự kiện hoạt động khác nhau giữa 2000, XP và Vista –

Trả lời

6

Làm cho dịch vụ của bạn phụ thuộc vào TermService (dịch vụ Dịch vụ đầu cuối). Dưới trang bìa, lớp SystemEvents dựa trên hàm WTSRegisterSessionNotification Win32, mà is documented không thành công nếu dịch vụ Thiết bị đầu cuối không bắt đầu vào lúc nó được gọi. Bằng cách thêm phụ thuộc vào TermService vào dịch vụ của bạn, điều đó sẽ không xảy ra. Bạn cũng có thể kết nối với sự kiện toàn cầu Global \ TermSrvReadyEvent bằng cách sử dụng một kỹ thuật như this và đợi để đăng ký trình xử lý SystemEvent cho đến khi sự kiện TS "ready" kích hoạt.

0

hãy thử rời khỏi sự kiện đã đăng ký thay vì xóa sự kiện đó sau khi đường dây đọc Bạn đang đăng ký nghe rồi ngay lập tức hủy đăng ký không có ý nghĩa.

Các vấn đề liên quan