Wie zuverlässig erfassen, Windows logon, logoff, lock-und unlock-Ereignisse, die von einem Dienst?
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);
}
}
Habe ich einen Windows-Dienst. Wenn ich das system neu starten und anmelden, Abmelden, sperren oder entsperren der Sitzung. es wird nicht erfasst der Fall. Der Dienst wird ausgeführt, aber es wird nicht richtig funktionieren.
Wenn ich den Dienst neu starten, wird es alle Ereignisse erfassen, wie erwartet. Wie gehe ich über die Fehlersuche/Behebung?
Und was wollen Sie uns sagen mit...geben Sie Bitte "es funktioniert nicht" ein bisschen mehr detaillierte...wie funktioniert es nicht? Was tut es? Was könnte es tun?
Welche version(en) von Windows sind Sie speziell versuchen, den Gegner? Die Ereignisse anders Verhalten zwischen 2000, XP und Vista
Welche version(en) von Windows sind Sie speziell versuchen, den Gegner? Die Ereignisse anders Verhalten zwischen 2000, XP und Vista
InformationsquelleAutor Abdul jalil | 2009-10-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
Machen Sie Ihren service davon abhängig TermService (Terminaldienste-Dienst). Unter der Decke, die SystemEvents-Klasse basiert auf der Win32-Funktion WTSRegisterSessionNotification, die dokumentiert ist zu scheitern, wenn der Terminal Services-Dienst noch nicht gestartet wurde, durch die Zeit, die es aufgerufen wird. Durch das hinzufügen der Abhängigkeit von TermService an Ihren service, dass wird nicht passieren. Sie könnte auch eine Verbindung zu der Global\TermSrvReadyEvent globalen Veranstaltung mit einer Technik wie diese und warten, um zu registrieren, das SystemEvent-handler, bis die TS wieder "bereit" - Ereignis ausgelöst.
InformationsquelleAutor nitzmahone
lassen Sie die Veranstaltung registriert, statt es zu entfernen, nachdem Sie die readline -
Registrieren Sie sich, um dann zu hören, sofort aufheben der Registrierung, die keinen Sinn macht.
InformationsquelleAutor DAC