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 :

ManagementObject classe invalide


Sujet :

C#

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2012
    Messages : 44
    Points : 36
    Points
    36
    Par défaut ManagementObject classe invalide
    Bonjour !

    Je développe actuellement une DLL qui me permettra de récupérer les informations du système comme le processeur, cartes graphiques, disques ...

    Du coup, voici un petit exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SysInfo si = new SysInfo();
    Processor[] p = si.GetProcessor();
    Graphic[] g = si.GetGraphics();
    La classe Processor contient un duo variable/propriété, par exemple :
    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
     
    private int numberOfCores;
    private int numberOfLogicalProcessors;
     
    public int NumberOfLogicalProcessors {
                get {
                    return numberOfLogicalProcessors;
                }
                internal set {
                    numberOfLogicalProcessors = value;
                }
            }
     
            public int NumberOfCores {
                get {
                    return numberOfCores;
                }
                internal set {
                    numberOfCores = value;
                }
            }
    Pour 'remplir' la classe je procède comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public Graphic[] GetGraphics() {
                query = "SELECT * FROM Win32_VideoController";
                mos.Query.QueryString = query;
                moc = mos.Get();
                Load(Components.Graphics, moc);
     
                return graphics;
            }
    Et voici la méthode Load qui me pose problème :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    private void Load(Components c, ManagementObjectCollection moc) {
    foreach (ManagementObject mo in moc) {
                    int i = 0;
    if (c == Components.Graphics) {
                        graphics = new Graphic[moc.Count];
                        Graphic g = new Graphic();
                        g.AdapterCompatibility = RequestString(mo, "adaptercompatibility");
    // etc pour les autres composants
    Coté processeur, récupérer les informations ne pose aucun problème, sauf que quand je veux récupérer les informations sur les cartes graphiques via la query "SELECT * FROM Win32_VideoController", j'ai une exception au niveau du commencement du foreach :
    Une exception non gérée du type 'System.Management.ManagementException' s'est produite dans System.Management.dll

    Informations supplémentaires : Classe non valide
    Il y a à peine 2 heures de cela, et depuis le début du projet, je n'avais absolument aucun problème, pas d'exception de ce coté-ci ... Du coup je me sens un peu perdu ... J'avais déjà eu cette erreur lorsque j'avais fait une faute dans la requête, mais là cela m'a l'air bon ... http://msdn.microsoft.com/en-us/libr...=vs.85%29.aspx

    Désolé s'il y peut-être un peu beaucoup de code, je voulais être clair !

    Merci par avance !

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Février 2005
    Messages
    351
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2005
    Messages : 351
    Points : 346
    Points
    346
    Par défaut
    Salut,

    Il y a à peine 2 heures de cela, et depuis le début du projet, je n'avais absolument aucun problème, pas d'exception de ce coté-ci ..
    Est-ce que tu aurais fait une mise du framework qui fait que la classe ne soit plus compatible maintenant?

    Cédric

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2012
    Messages : 44
    Points : 36
    Points
    36
    Par défaut
    Nope, aucun changement de ce coté-là, et je passe pour justement donner la solution, elle ne concerne pas le code à prioris mais il s'agirait d'une sorte de 'corruption' de WMI ... J'avoue ne pas avoir tout compris de coté-là.

    Merci quand même !

  4. #4
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2003
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 274
    Points : 372
    Points
    372
    Par défaut
    Salut,

    Pour avoir bosse sur un projet de 6 mois de scripting wmi afin de recuperer absolument tout sur tout sur un serveur, je peux te dire que ce genre de plantange n'est pas frequent du tout.

    Attention, il y a aussi de grandes differences entre les versions des OS et donc certaines fonctions de WMI sont accessible ou non selon la version de l'OS.

    De plus, fais attention quand tu recuperes certyaines informations car la aussi, en fonction du materiel, les informations se trouvent a differents endroits et ne s'analysent donc pas de la meme maniere.

    Bon courage dans tes developpements !
    Vous avez la réponse à votre question ? Mettez votre sujet en

    Une personne vous a correctement aidé ? Cliquez sur le

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2012
    Messages : 44
    Points : 36
    Points
    36
    Par défaut
    Salut, merci des détails.

    J'ai prévu tout ce qui pourrai ne pas coincider afin de rendre l'application stable.
    Je ferai quelques tests sur diverses machines pour m'en assurer.

Discussions similaires

  1. [2.x] doctrine:generate:entity génère une classe invalide
    Par samche dans le forum Symfony
    Réponses: 3
    Dernier message: 05/09/2012, 11h50
  2. Réponses: 30
    Dernier message: 12/01/2009, 09h08
  3. 'Invalid class string'
    Par <romain/> dans le forum Général Python
    Réponses: 24
    Dernier message: 01/08/2008, 15h33
  4. Réponses: 2
    Dernier message: 23/04/2008, 11h00
  5. ."CLASS": invalid identifier
    Par Calahad dans le forum Hibernate
    Réponses: 2
    Dernier message: 06/09/2006, 16h49

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