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 :

properties LastLogon Win32_NetworkLoginProfile Class


Sujet :

C#

  1. #1
    Membre confirmé Avatar de llaffont
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2007
    Messages
    701
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2007
    Messages : 701
    Points : 597
    Points
    597
    Par défaut properties LastLogon Win32_NetworkLoginProfile Class
    Salut

    Je tente de récupérer dans ma class les champs LastLogon, Name et NumberOf Logons.


    L'objet de mon interrogation est constitué comme suit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
                aObjectQuery = new System.Management.ObjectQuery("Select LastLogon, Name, NumberOfLogons From Win32_NetworkLoginProfile where NumberOfLogons > 1");
    Le Problème c'est qu'il ne remonte que la première valeur trouvé et laisse de coté les autres.

    Je devrais obtenir plusieurs LastLogon avec leur Name et leur NumberOfLogons.

    Je suis sur que cela vient de la manière d'interpréter le résultat.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
    aManagementObjectSearcher = new ManagementObjectSearcher(aManagementScope, aObjectQuery);
                aManagementObjectCollection = aManagementObjectSearcher.Get();
    Ces objets ne doivent pas être approprié.

    Mais là ! Je bloque. Cela devient trop ardu pour mon petit ciboulot.
    Help Me !
    Merci d'avance a celui qui me trouve la solution.
    La théorie, c'est quand on sait tout et que rien ne fonctionne.
    La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.

    Ici, nous avons réuni théorie et pratique : Rien ne fonctionne... et personne ne sait pourquoi !


    Albert Einstein

  2. #2
    Max
    Max est déconnecté
    Expert éminent sénior

    Avatar de Max
    Homme Profil pro
    Artisan développeur
    Inscrit en
    Mai 2007
    Messages
    2 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Artisan développeur
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2007
    Messages : 2 954
    Points : 14 979
    Points
    14 979
    Par défaut
    Salut.

    Le code suivant me renvoie bien plusieurs valeurs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    // ...
    SelectQuery query = new SelectQuery("Select LastLogon, Name, NumberOfLogons From Win32_NetworkLoginProfile where NumberOfLogons > 1");
    using (ManagementObjectSearcher searchResults = new ManagementObjectSearcher(scope, query)) {
    	foreach (ManagementObject managementObject in searchResults.Get()) {
    		Console.WriteLine("{0} / {1} / {2}", managementObject["LastLogon"].ToString(), managementObject["Name"].ToString(), managementObject["NumberOfLogons"].ToString());
    	}
    }
    Bon courage

  3. #3
    Membre confirmé Avatar de llaffont
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2007
    Messages
    701
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2007
    Messages : 701
    Points : 597
    Points
    597
    Par défaut
    Oui ! Cela retourne 3 valeurs correspondant à une seule valeur.

    Je dévellope si tu tapes sur ton poste, sous la console de commande

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    wmic NETLOGIN get LastLogon, Name, NumberOfLogons
    Tu vas obtenir un résultat de ce style (seulement si ton poste est multi-compte)

    LastLogon | Name | NumberOfLogons
    | AUTORITE NT\SYSTEM |
    | AUTORITE NT\SERVICE LOCAL |
    | AUTORITE NT\SERVICE RÉSEAU |
    20090726122427.000000+120 | PC-BUREAU\Loozman | 1355
    20090724205006.000000+120 | PC-BUREAU\Batman | 939
    20090726122402.000000+120 | PC-BUREAU\Superman | 36
    20090620011304.000000+120 | PC-BUREAU\Administrateur | 1
    Et je veux obtenir le même résultat avec mon "Where" pris en concidération.
    La théorie, c'est quand on sait tout et que rien ne fonctionne.
    La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.

    Ici, nous avons réuni théorie et pratique : Rien ne fonctionne... et personne ne sait pourquoi !


    Albert Einstein

  4. #4
    Max
    Max est déconnecté
    Expert éminent sénior

    Avatar de Max
    Homme Profil pro
    Artisan développeur
    Inscrit en
    Mai 2007
    Messages
    2 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Artisan développeur
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2007
    Messages : 2 954
    Points : 14 979
    Points
    14 979
    Par défaut
    Re.
    Et je veux obtenir le même résultat avec mon "Where" pris en concidération.
    C'est plutôt surprenant... car de mon côté, avec un "where NumberOfLogons > 1", j'obtiens le résultat suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    20081119172706.000000+060 / myHost\mrA / 4
    20090615105948.000000+120 / myHost\mrB / 4
    20090617152525.000000+120 / myHost\mrC / 10
    20090609173647.000000+120 / myHost\mrD / 28
    alors que si j'utilise "where NumberOfLogons > 10", j'obtiens cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    20090609173647.000000+120 / myHost\mrD / 28
    Ce qui colle bien !

    Tu pourrais faire voir un peu plus de ton code stp ? Et travailles-tu en local ou en distant ? Merci

  5. #5
    Membre confirmé Avatar de llaffont
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2007
    Messages
    701
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2007
    Messages : 701
    Points : 597
    Points
    597
    Par défaut
    En fait n'ayant pas mon code sous la main ce WE j'ai pris ton petit bout à toi (de code )

    Je travaille en local.

    Je vais tenté ce matin sur mon poste boulot.
    La théorie, c'est quand on sait tout et que rien ne fonctionne.
    La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.

    Ici, nous avons réuni théorie et pratique : Rien ne fonctionne... et personne ne sait pourquoi !


    Albert Einstein

  6. #6
    Membre confirmé Avatar de llaffont
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2007
    Messages
    701
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2007
    Messages : 701
    Points : 597
    Points
    597
    Par défaut
    Bon je viens de refaire le test il ne m'envoies qu'une seule réponse.

    Voilà ma class

    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
     
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Data;
    using System.Management;
     
    namespace ConsoleApplication1
    {
        public class InventaireMachine
        {
            private bool FlagStop;
            private System.Management.ManagementScope aManagementScope;
            private ConnectionOptions aConnectionOptions;
            private System.Management.ObjectQuery aObjectQuery;
            private ManagementObjectCollection aManagementObjectCollection;
            private ManagementObjectSearcher aManagementObjectSearcher;
     
            public InventaireMachine()
            {
                aConnectionOptions = new ConnectionOptions();
                aManagementScope = new System.Management.ManagementScope(@"\\." + @"\root\cimv2", aConnectionOptions);
     
     
            }
     
     
            public void Interro()
            {
     
                SelectQuery query = new SelectQuery("Select LastLogon, Name, NumberOfLogons From Win32_NetworkLoginProfile where NumberOfLogons > 1");
                using (ManagementObjectSearcher searchResults = new ManagementObjectSearcher(aManagementScope, query))
                {
                    foreach (ManagementObject managementObject in searchResults.Get())
                    {
                        Console.WriteLine("{0} / {1} / {2}", managementObject["LastLogon"].ToString(), managementObject["Name"].ToString(), managementObject["NumberOfLogons"].ToString());
     
                    }
                }
            }
        }
    }
    La théorie, c'est quand on sait tout et que rien ne fonctionne.
    La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.

    Ici, nous avons réuni théorie et pratique : Rien ne fonctionne... et personne ne sait pourquoi !


    Albert Einstein

  7. #7
    Max
    Max est déconnecté
    Expert éminent sénior

    Avatar de Max
    Homme Profil pro
    Artisan développeur
    Inscrit en
    Mai 2007
    Messages
    2 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Artisan développeur
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2007
    Messages : 2 954
    Points : 14 979
    Points
    14 979
    Par défaut
    Hum... je ne sais pas quoi te dire, j'obtiens les résultats attendus avec ton code ... en local comme en distant (après une petite modif sur le scope pour le distant, certes).

    Juste une petite modif (afin d'éviter les plantages sur les comptes comme NT AUTHORITY\SYSTEM) :
    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
    using (ManagementObjectSearcher searchResults = new ManagementObjectSearcher(aManagementScope, query)) {
     
    	string logon = string.Empty;
    	string name = string.Empty;
    	string numberOfLogons = string.Empty;
     
    	foreach (ManagementObject managementObject in searchResults.Get()) {
    		try {
    			logon = managementObject["LastLogon"].ToString();
    		}
    		catch {
    			logon = "Unknown";
    		}
    		try {
    			name = managementObject["Name"].ToString();
    		}
    		catch {
    			name = "Unknown";
    		}
    		try {
    			numberOfLogons = managementObject["NumberOfLogons"].ToString();
    		}
    		catch {
    			numberOfLogons = "Unknown";
    		}
    		Console.WriteLine("{0} / {1} / {2}", logon, name, numberOfLogons);
    	}
    }
    Je te propose un autre test : essaye voir avec l'outil de M$ : WMICodeCreator et dis ce qu'il te renvoie stp.

  8. #8
    Membre confirmé Avatar de llaffont
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2007
    Messages
    701
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2007
    Messages : 701
    Points : 597
    Points
    597
    Par défaut
    Je te remercie de ton Aide.
    Le WMICodeCreator est une bonne idée je vais faire avec.
    La théorie, c'est quand on sait tout et que rien ne fonctionne.
    La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.

    Ici, nous avons réuni théorie et pratique : Rien ne fonctionne... et personne ne sait pourquoi !


    Albert Einstein

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Framework] Injecter un fichier properties dans une classe de constante
    Par Slyders dans le forum Spring
    Réponses: 0
    Dernier message: 25/03/2010, 17h10
  2. Réponses: 1
    Dernier message: 22/03/2010, 15h40
  3. probleme avec property dans une class
    Par Dereck07 dans le forum Débuter
    Réponses: 3
    Dernier message: 03/01/2010, 23h07
  4. Gestion des 'property' d'une classe
    Par philnext dans le forum Langage
    Réponses: 2
    Dernier message: 22/12/2007, 08h45
  5. Réponses: 2
    Dernier message: 24/10/2007, 16h58

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