Toon posts:

.NET 2.0 Windows Service User Events

Pagina: 1
Acties:

Verwijderd

Topicstarter
Voor het programma dat ik maak (Een windows service geschreven in C# NET 2) moet ik weten wanneer een gebruiker de computer locked of wanneer de gebruiker zichzelf afmeld.

Een tijd terug heb ik hier al een topic over gemaakt maar dit heeft niet geholpen
( Vorige topic )

Wel heb ik een oplossing gevonden om te kijken wanneer een gebruiker uitlogd maar dit is geen goede manier omdat ik gebruik maak van het eventlog op de lokale computer. Maar niet op elke computer staat het aan dat de login events gelogd worden. Dit is de code die ik nu heb maar ik denk dat het beter is op een andere manier.


C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
   void EventLog_EntryWritten(object sender, EntryWrittenEventArgs e)
        {
            if (!_serverRunning) return;

            if (e.Entry.InstanceId == 551 &&  e.Entry.EntryType == EventLogEntryType.SuccessAudit)
            {
                try
                {
                    UserLogout();
                }
                catch (Exception ex)
                {
                      LogException(ex);
                }
            }
        }



Weet iemand misschien een betere manier die werkt onder windows xp en windows 2000 ?

  • MTWZZ
  • Registratie: Mei 2000
  • Laatst online: 13-08-2021

MTWZZ

One life, live it!

Je kunt proberen om OnSessionChange van ServiceBase te overriden. Deze method wordt aangeroepen als de Terminal Services (en volgens mij doet ie dat ook voor user switching etc) een wijziging doet (login/logout etc)

Nu met Land Rover Series 3 en Defender 90


Verwijderd

Topicstarter
heb ik al geprobeerd maar volgensmij is dit puur voor Terminal Services..

  • whoami
  • Registratie: December 2000
  • Laatst online: 11:29
Hey st0rmed, er is niks mis mee met het kicken van je topic binnen 24h, maar kick het dan wel ff met een zinvolle reply, ipv met een paar smilies.

https://fgheysels.github.io/


  • CodeIT
  • Registratie: Juni 2002
  • Laatst online: 08:10

CodeIT

Code IT

Misschien heb je hier iets aan: http://www.codeproject.com/system/logonsessions.asp
En anders via WMI: http://msdn.microsoft.com...asp?frame=true#_hmm_users (en dan naar USERS scrollen)

[ Voor 6% gewijzigd door CodeIT op 11-10-2006 15:15 ]


  • Andre_J
  • Registratie: September 2005
  • Laatst online: 07:39
Ik gebruik onderstaande code in een vbscript (die vanuit een delphi service gestart wordt) om te kijken of er iemand is ingelogd....

Visual Basic:
1
2
3
4
5
'Find logged on user
Set objSystemSet = g_oWMI.InstancesOf ("Win32_ComputerSystem") 
For Each System in objSystemSet 
    sUserName = System.UserName 
Next 


Suc6

Verwijderd

Misschien kan je een event uit de class SystemEvents afvangen. Er zit in ieder geval een event "SessionEnding" in ...

Deze class bevindt zich overigens in de Microsoft.Win32 namespace.

Succes

Verwijderd

Topicstarter
super bedankt allemaal ik heb nu meerdere oplossingen gevonden

CodeIT ,the_nowhereman bedankt! dankzij jullie heb ik een werkende oplossing ...
maar nu heb ik het toch weer veranderd want het Microsoft.Win32.SystemEvents.SessionEnded event werkt en dat is toch iets netter!!!!!!


Paulos82 _/-\o_ _/-\o_ _/-\o_
Pagina: 1