IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

[2.0][service windows] detection de la session?


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Février 2004
    Messages
    363
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 363
    Par défaut [2.0][service windows] detection de la session?
    Bonjour,

    J'ai fait un petit service windows, et j'aimerais pouvoir detecter si une session est ouverte ou fermée.

    Voici ce que j'ai fait pour le moment :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
    public partial class timeControlSF2 : ServiceBase
        {
            private static bool sessionOpen = false;
            ...
     
            public timeControlSF2()
            {
                InitializeComponent();
     
                ...
     
                SystemEvents.SessionSwitch += new SessionSwitchEventHandler(SystemEvents_SessionSwitch);
     
            }
            ...
     
    void SystemEvents_SessionSwitch(object sender, SessionSwitchEventArgs e)
            {
                System.Windows.MessageBox.Show("raison: "+e.Reason.ToString(), "tests",
                       System.Windows.MessageBoxButton.OK,
                       System.Windows.MessageBoxImage.None,
                       System.Windows.MessageBoxResult.OK,
                       System.Windows.MessageBoxOptions.ServiceNotification);
                switch (e.Reason)
                {
                    case SessionSwitchReason.SessionLock: sessionOpen = false; break;
                    case SessionSwitchReason.SessionLogoff: sessionOpen = false;
                        this.mess.Visible = false; this.mess.mess.check = true; break;
                    case SessionSwitchReason.SessionLogon: sessionOpen = true; break;
                    case SessionSwitchReason.SessionUnlock: sessionOpen = true; break;
                }
            }
    Le problème est que mon evenement n'est jamais déclenché, que je verrouille ma session, que je la deverrouille, que je l'ouvre ou la ferme.

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    612
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 612
    Par défaut
    un service tourne meme si aucune session n'est ouverte?!!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.Security.Principal.WindowsIdentity.GetCurrent()
    peut etre que sa pourras t'aider....si retour = null => pas de session courrante??

  3. #3
    Membre éclairé
    Inscrit en
    Février 2004
    Messages
    363
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 363
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    System.Security.Principal.WindowsIdentity.GetCurrent()
    Celà me renvoit le nom d'utilisateur rentré lors de l'enregistrement de mon service.
    Donc ca me renvoit toujours la même chose, même si aucune session utilisateur est ouverte.

  4. #4
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Par défaut
    un service tourne meme si aucune session n'est ouverte?!!
    Oui.
    Les services font partis des éléments lancés avant l'ouverture d'une session.
    Sauf bien sur si le démarrage du service est en manuel.

    Le problème est que mon evenement n'est jamais déclenché, que je verrouille ma session, que je la deverrouille, que je l'ouvre ou la ferme.
    Une sessions verrouillée n'est pas fermée, elle est juste verrouillée
    Ferme ta session et rouvre la.

  5. #5
    Membre éclairé
    Inscrit en
    Février 2004
    Messages
    363
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 363
    Par défaut
    oui, j'ai déjà essayé mais rien n'est détécté, et c'est assez normal.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.Security.Principal.WindowsIdentity.GetCurrent()
    et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SystemEvents.SessionSwitch
    ne changent pas car ils se basent sur le nom d'utilisateur avec lequel j'ai enregistré mon service, donc même si je n'ai aucune session ouverte visiblement, WindowsIdentity.GetCurrent() me renverra toujours la même chose, et SystemEvents.SessionSwitch ne se déclenchera jamais sur mon service.

    J'ai trouvé la cause du problème mais pas la solution encore. Je cherche encore, si vous avez une solution avant moi, n'hesitez pas, merci!

  6. #6
    Membre éprouvé
    Avatar de _skip
    Homme Profil pro
    Développeur d'applications
    Inscrit en
    Novembre 2005
    Messages
    2 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur d'applications
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 898
    Par défaut
    On peut le faire en activant l'audit du logon sur la machine et en checkant périodiquement le event log pour voir si des messages de logon (ID dans les 500) apparaissent.
    Je trouve ça un peu trash.

    Sinon je sais pas s'il est possible de créer des logon/logoff script qui envoient des évenements windows à ton service.

Discussions similaires

  1. Ouverture d'une session desktop depuis un service Windows
    Par jesus144 dans le forum Services Windows
    Réponses: 0
    Dernier message: 13/08/2010, 16h56
  2. Réponses: 1
    Dernier message: 24/06/2010, 14h24
  3. Réponses: 1
    Dernier message: 17/05/2010, 17h23
  4. Service Windows arrêté à la fermeture d'une session Windows
    Par dlayla4 dans le forum Windows Forms
    Réponses: 8
    Dernier message: 19/02/2008, 15h53
  5. service windows et detection d'appui sur le bouton "del" du clavier?
    Par Jayceblaster dans le forum Windows Forms
    Réponses: 25
    Dernier message: 06/11/2007, 16h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo