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

Scripts/Batch Discussion :

Ouvrir une session utilisateur


Sujet :

Scripts/Batch

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2008
    Messages : 252
    Points : 124
    Points
    124
    Par défaut Ouvrir une session utilisateur
    Bonjour,

    Peut-on logger un utilisateur directement depuis powerhshell ?

    Merci d'avance pour les réponses.

  2. #2
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Salut,
    peux-tu préciser ?

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2008
    Messages : 252
    Points : 124
    Points
    124
    Par défaut
    Oui je peux , je voudrais faire un script qui vérifie si un user est logé sur une machine. Si ce n'est pas le cas, le script ouvrirait une session pour cet utilisateur.

    En gros je voudrais juste rendre active une session pour un utilisateur donné.

  4. #4
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Peut être avec l'api Win32 LogonUser, mais je n'ai pas testé.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2008
    Messages : 252
    Points : 124
    Points
    124
    Par défaut
    Salut Laurent,

    J'ai réussi à faire l'appelle à la fonction LogonUser .
    J'ai bien le token en output qui me prouve que tout c'est bien passé.
    Par contre quand je fais des traitements qui demande que le user en question soit logé, ce ne marche pas .

    J'ai pu remarqué que même si la fonction est appelée correctement, l'utilisateur n'apparaît pas dans le gestionnaire de tâches sous l'onglet "Utilisateurs".

    Quelqu'un aurait une idée de se qui cloche ?

    Merci d'avance .

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2008
    Messages : 252
    Points : 124
    Points
    124
    Par défaut
    Alors alors personne n'a de solution ?

  7. #7
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par sokai Voir le message
    Alors alors personne n'a de solution ?
    Peux-tu nous communiquer ton code ?
    Sinon, pour moi, cela me sera difficile de répondre à ta précédente question :
    Citation Envoyé par sokai Voir le message
    Quelqu'un aurait une idée de ce qui cloche ?
    Le battant, peut être ?

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2008
    Messages : 252
    Points : 124
    Points
    124
    Par défaut
    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    public class Login
    {
        [DllImport("advapi32.dll", SetLastError = true)]
        public static extern bool LogonUser(
            string lpszUsername,
            string lpszDomain,
            string lpszPassword,
            int dwLogonType,
            int dwLogonProvider,
            out IntPtr phToken);
    
        [DllImport("advapi32.dll", SetLastError = true)]
        public extern static bool DuplicateToken(
            IntPtr ExistingTokenHandle, 
            int SECURITY_IMPERSONATION_LEVEL, 
            out IntPtr DuplicateTokenHandle);
    
        [DllImport("kernel32", CharSet = CharSet.Auto, SetLastError = true, ExactSpelling = true)]
        internal static extern int CloseHandle(IntPtr hObject);
    
        const int LOGON32_PROVIDER_DEFAULT          = 0;
        const int LOGON32_LOGON_INTERACTIVE         = 2;
        const int LOGON32_LOGON_NETWORK             = 3;
        const int LOGON32_LOGON_BATCH               = 4;
        const int LOGON32_LOGON_SERVICE             = 5;
        const int LOGON32_LOGON_UNLOCK              = 7;
        const int LOGON32_LOGON_NETWORK_CLEARTEXT   = 8;
        const int LOGON32_LOGON_NEW_CREDENTIALS     = 9;
    
        IntPtr hToken;
        IntPtr hTokenDuplicate;
        WindowsIdentity windowsIdentity;
        WindowsImpersonationContext impersonationContext;
    
        public Login(string user, string domain, string password)
        {
            if (LogonUser(user, domain, password, LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, out hToken))
            {
                if (DuplicateToken(hToken, 2, out hTokenDuplicate))
                {
                    windowsIdentity = new WindowsIdentity(hTokenDuplicate);
                    impersonationContext= windowsIdentity.Impersonate();
                }
            }
        }
    
        public void LogOffUser()
        { 
            impersonationContext.Undo();
            if (hToken != IntPtr.Zero) CloseHandle(hToken);
            if (hTokenDuplicate != IntPtr.Zero) CloseHandle(hTokenDuplicate);
        }
    }
    Voici ma class de login. Comme déjà di elle marche correctement enfin il me semble... par contre dès que je lance des traitements qui ont besoin que le user en question soit logé, les traitements s'arrêtent comme si l'utilisateur n'était pas logé.

    Voilé merci d'avance !

Discussions similaires

  1. interdire utilisateur d'ouvrir une session
    Par akhaa dans le forum Windows XP
    Réponses: 0
    Dernier message: 19/05/2011, 09h13
  2. création utilisateur sans autorisation d'ouvrir une session
    Par tibal dans le forum Windows Serveur
    Réponses: 4
    Dernier message: 03/07/2008, 11h58
  3. Réponses: 7
    Dernier message: 17/06/2008, 10h46
  4. Windows Server 2003 : Ouvrir une session interactive
    Par FoxDeltaSierra dans le forum Windows Serveur
    Réponses: 16
    Dernier message: 22/03/2007, 17h56
  5. Empécher un utilisateur d'ouvrir une session
    Par Safaritn dans le forum Administration système
    Réponses: 9
    Dernier message: 15/02/2007, 15h35

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