且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

如何识别窗口服务登录事件

更新时间:2023-12-04 08:37:46

http://msdn.microsoft.com/en-us/library/system.serviceprocess.servicebase.onsessionchange.aspx

这可能是你***的选择,因为Vista和Win7的处理用户会话很像一个终端服务器会。这应该让你处理会话的变化,并让相关信息的结构,如果你想会话ID或理由会改变(登录/注销/锁等)

i have a windows service that get user details and save the result into log text file. and, my problem is when i log off my system and login again ie without restarting the machine.., i also would like to save the time that i login my system into that log file.. How can write a login event in window service.. pls help with comments

I have used the below code, but nothing was written to the log text file on log on. ie LogOn no-1 or LogOn no-2... Is there any mistake or logon didnt get enough time to execute the process..

     Microsoft.Win32.SystemEvents.SessionSwitch += new Microsoft.Win32.SessionSwitchEventHandler(SystemEvents_SessionSwitch);
 void SystemEvents_SessionSwitch(object sender, Microsoft.Win32.SessionSwitchEventArgs e)
        {
            StreamWriter str = new StreamWriter("D:\\Log.txt", true);
            str.WriteLine("LogOn no-1: " + DateTime.Now.ToString());
            str.Close();
            if (e.Reason == SessionSwitchReason.SessionLogon)
            {
                StreamWriter str1 = new StreamWriter("D:\\Log.txt", true);
                str1.WriteLine("LogOn no-2: " + DateTime.Now.ToString());
                str1.Close();
            }
        }

http://msdn.microsoft.com/en-us/library/system.serviceprocess.servicebase.onsessionchange.aspx

This may be your best bet, as Vista and Win7 handle the user sessions much like a terminal server would. This should let you handle session changes and it gives a structure with the relevant information, if you want session ID or reason for session change (logon / logoff / lock etc)