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 :

Exception levée par intérrogation WMI


Sujet :

C#

  1. #1
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    219
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 219
    Points : 66
    Points
    66
    Par défaut Exception levée par intérrogation WMI
    Bonjour,

    Je développe actuellement un petit utilitaire pour la maintenance des serveurs W2k3 à distance.
    Je ne suis pas expert en C# mais j'arrive à m'en sortir avec la doc MSDN et aussi ceci: http://dotnet.developpez.com/articles/wmi1 , mais j'ai un problème avec une portion de code que je n'arrive pas à résoudre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    this.query = new ObjectQuery("SELECT DisplayName FROM Win32_Service ORDER BY DisplayName");
                    this.searcher = new ManagementObjectSearcher(this.mngtScope, this.query);
                    this.collection = this.searcher.Get();
     
                    foreach (ManagementObject item in this.collection)
                    {
                        servicesList[i] = item["DisplayName"].ToString();
                        i++;
                    }
    Voici l'exception levée, que je ne trouve pas très explicite:

    à System.Management.ManagementObjectCollection.ManagementObjectEnumerator.MoveNext()
    à wmicore.WMIConnect.getNTServices(String server) dans C:\Users\admin\Documents\Visual Studio 2008\Projects\matt-nance\wmicore\WMIConnect.cs:ligne 151
    Une exception de première chance de type 'System.Management.ManagementException' s'est produite dans System.Management.dll
    La ligne concernée par la trace:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    foreach (ManagementObject item in this.collection)
    J'ai suivi la doc à la lettre, je ne vois pas ce qui cloche.
    Pourriez vous me donner un petit coup demain svp?

    Merci.

  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 933
    Points
    14 933
    Par défaut
    Salut.

    Pourrais-tu poster le code où tu déclares ton ManagementScope ?

    Merci

  3. #3
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    219
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 219
    Points : 66
    Points
    66
    Par défaut
    Bonjour, voici la méthode initialisant le managementscope:

    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
    public bool connect(String serverName)
            {
                bool codeRetour = true;
                this.serverName = serverName;
                if (this.serverName == null || this.serverName.Length == 0)
                {
                    codeRetour = false;
                    throw new Exception("Le nom / IP du serveur ne peut pas être vide!");              
                }
                else
                {
                    if (this.serverName == "Localhost" || this.serverName == "127.0.0.1")
                    {
                        throw new Exception("Les connexions locales ne sont pas autorisées!");
                    }
     
                    if (testPing())
                    {
                        try
                        {
                            this.mngtScope = new ManagementScope("\\\\" + this.serverName + "\\root\\cimv2", this.connectOpts);
                            this.mngtScope.Connect();
                        }
                        catch (Exception e)
                        {
                            Console.Write(e.StackTrace);
                            codeRetour = false;
                        }
                    }
                    else
                    {
                        codeRetour = false;
                    }
                }
     
                return codeRetour;
     
            }
    Et celle initialisant les options de connexion:

    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
    public void setConnectOpts(String username, String passwd, String domain)
            {
                if (username.Length > 0)
                {
                    this.connectOpts.Username = username;
                }
                else
                {
                    throw new Exception("Le nom d'utilisateur ne peut pas être vide!");
                }
     
                if (passwd.Length > 0)
                {
                    this.connectOpts.Password = passwd;
                }
                else
                {
                    throw new Exception("Le mot de passe ne peut pas êre vide!");
                }
     
                if (domain.Length > 0)
                {
                    this.connectOpts.Authority = "ntlmDomain:" + domain;
                }
            }

  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 933
    Points
    14 933
    Par défaut
    Re.

    Tu peux essayer en remplaçant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ObjectQuery query = new ObjectQuery("SELECT DisplayName FROM Win32_Service ORDER BY DisplayName");
    par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SelectQuery query = new SelectQuery("SELECT DisplayName FROM Win32_Service ORDER BY DisplayName");
    Et un autre question, dans le debuggeur, que vaut ta collection dans :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.collection = this.searcher.Get();

  5. #5
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    219
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 219
    Points : 66
    Points
    66
    Par défaut
    Rien ne change lorsque que j'utilise un selectquery.

    Rien dans le débogueur concernant "this.collection = this.searcher.Get();"

  6. #6
    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 933
    Points
    14 933
    Par défaut
    Salut.

    Je ne sais pas trop où tu en es dans ton projet, mais pourrais-tu confirmer que tu arrives à te connecter sur ton serveur distant stp, par exemple en testant avec l'outil WMICodeCreator ?

    Merci, et bon courage

Discussions similaires

  1. Exception levée par l'initialiseur de type
    Par beretb dans le forum C#
    Réponses: 6
    Dernier message: 04/06/2009, 15h26
  2. Exception levée par l'initialiseur de type
    Par ted_2.3 dans le forum VB.NET
    Réponses: 5
    Dernier message: 02/05/2008, 23h14
  3. Réponses: 3
    Dernier message: 29/11/2007, 10h37
  4. Expliciter une exception levée par un objet OLE
    Par Bleuarff dans le forum Windows
    Réponses: 3
    Dernier message: 12/05/2005, 16h10

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