Перезагрузите приложение C# windows при переключении пользователя.
У меня есть одно простое приложение на c#, которое работает под логином пользователя. Я хочу закрыть это приложение, когда пользователь пытается переключить пользователя, и повторно запустить его, когда пользователь вошел в систему как тот же или другой пользователь.
Что я уже пробовал:
1. я попробовал добавить 1 поток, который будет работать непрерывно и в этом потоке :
private static void SwitchUserThread() { SystemEvents.SessionSwitch += new SessionSwitchEventHandler(SessionSwitchHandler); while (true) { } }
private static void SessionSwitchHandler(object sender, SessionSwitchEventArgs args) { try { WriteToLog(DateTime.Now + " : Inside SessionSwitch, args.Reason : " + args.Reason); switch (args.Reason) { case SessionSwitchReason.ConsoleDisconnect: WriteToLog(DateTime.Now + " : Inside SessionSwitch, args.Reason : " + args.Reason); Application.Exit(); WriteToLog(DateTime.Now + " Application Exit "); break; case SessionSwitchReason.ConsoleConnect: WriteToLog(DateTime.Now + " : Inside SessionSwitch, args.Reason : " + args.Reason); Application.Run(); WriteToLog(DateTime.Now + " Application started Succefully "); break; } } catch (Exception ex) { } }
Kornfeld Eliyahu Peter
Почему приложение, а не сервис?
https://msdn.microsoft.com/en-us/library/microsoft.win32.systemevents(v=против 110). aspx
Dave Kreskowiak
Определите, что вы подразумеваете под "Когда пользователи пытаются переключить пользователя". Вы говорите о том, что если пользователь выходит из Windows и снова входит в систему как кто-то другой?
uday vichare
не выходя из системы и не включаясь.. Я имел в виду просто переключение пользователя с (win+l), который не полностью выходит из системы предыдущего пользователя.
Kornfeld Eliyahu Peter
Я не вижу в этом проблемы... При использовании fast user switch приложение, работающее в контексте пользователя A, будет отложено в сторону, а пользователь B получит новую среду с новым экземпляром приложения (например, открытое слово пользователя A не появится для пользователя B). Все, что вам нужно, это поместить ваше приложение в папку запуска (или реестр), и вы должны быть в порядке...
uday vichare
Я не могу иметь несколько экземпляров моего приложения, работающих одновременно.