Ik heb een windows service applicatie en wil erachter komen wanneer een gebruiker uitlogd.
Op http://support.microsoft....?scid=kb%3ben-us%3b151424
las ik dat dat met een Console Control handler kan.. toen ben ik op google gaan zoeken en nu heb ik de volgende code. Maar als ik nu de ingelogde gebruiker uitlog komen er 2 exceptions.
Dit zijn de 2 exception uit de eventlogs.
An unhandled exception ('System.Security.SecurityException') occurred in PacmClient.exe [2192]. Just-In-Time debugging this exception failed with the following error: Serveruitvoering is mislukt
EventType clr20r3, P1 pacmclient.exe, P2 1.0.0.0, P3 450534bd, P4 system, P5 2.0.0.0, P6 4333ae87, P7 3719, P8 115, P9 system.security.security, P10 NIL.
De service draaid onder het lokale systeemaccount.
Wat doe ik verkeerd? of is er nog een betere manier om erachter te komen wanner een gebruiker uitlogd ?
Op http://support.microsoft....?scid=kb%3ben-us%3b151424
las ik dat dat met een Console Control handler kan.. toen ben ik op google gaan zoeken en nu heb ik de volgende code. Maar als ik nu de ingelogde gebruiker uitlog komen er 2 exceptions.
Dit zijn de 2 exception uit de eventlogs.
An unhandled exception ('System.Security.SecurityException') occurred in PacmClient.exe [2192]. Just-In-Time debugging this exception failed with the following error: Serveruitvoering is mislukt
EventType clr20r3, P1 pacmclient.exe, P2 1.0.0.0, P3 450534bd, P4 system, P5 2.0.0.0, P6 4333ae87, P7 3719, P8 115, P9 system.security.security, P10 NIL.
De service draaid onder het lokale systeemaccount.
Wat doe ik verkeerd? of is er nog een betere manier om erachter te komen wanner een gebruiker uitlogd ?
C#:
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
| // Declare the SetConsoleCtrlHandler function // as external and receiving a delegate. [DllImport("Kernel32")] public static extern bool SetConsoleCtrlHandler(HandlerRoutine Handler, bool Add); // A delegate type to be used as the handler routine // for SetConsoleCtrlHandler. public delegate bool HandlerRoutine(CtrlTypes CtrlType); // An enumerated type for the control messages // sent to the handler routine. public enum CtrlTypes { CTRL_C_EVENT = 0, CTRL_BREAK_EVENT, CTRL_CLOSE_EVENT, CTRL_LOGOFF_EVENT = 5, CTRL_SHUTDOWN_EVENT } private static bool ConsoleCtrlCheck(CtrlTypes ctrlType) { switch (ctrlType) { case CtrlTypes.CTRL_C_EVENT: EventLog.WriteEntry("Pacm service", "UserLogout 1"); break; case CtrlTypes.CTRL_BREAK_EVENT: EventLog.WriteEntry("Pacm service", "UserLogout 2"); break; case CtrlTypes.CTRL_CLOSE_EVENT: EventLog.WriteEntry("Pacm service", "UserLogout 3"); break; case CtrlTypes.CTRL_LOGOFF_EVENT: EventLog.WriteEntry("Pacm service", "UserLogout 4"); break; case CtrlTypes.CTRL_SHUTDOWN_EVENT: EventLog.WriteEntry("Pacm service", "UserLogout 5"); break; default: break; } return true; } public MyConstructor() { SetConsoleCtrlHandler(new HandlerRoutine(ConsoleCtrlCheck), true); } |
[ Voor 5% gewijzigd door Verwijderd op 11-09-2006 12:20 ]