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 :

[C#][WMI] Gérer une exeption sur une requête wmi


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2005
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 77
    Par défaut [C#][WMI] Gérer une exeption sur une requête wmi
    Bonjour à tous,

    En plein dans une application de gestion de parc en C# .NET 4.0, j'ai quelque petite difficulté pour gérer une exception qui se produit lors de l'interrogation par WMI d'un pc qui n'existe pas.

    Voici le code en question.

    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
       try
                {
                    ConnectionOptions connection = new ConnectionOptions();
                    connection.Username = tb_usernameX5.Text;
                    connection.Password = tb_passwordX5.Text;
                    connection.Authority = tb_domaineX5.Text;
     
                    ManagementScope scope = new ManagementScope("\\\\" + tb_nompcX5.Text + "\\root\\CIMV2", connection);
                    scope.Connect();
     
                    ObjectQuery query1 = new ObjectQuery("SELECT * FROM WIN32_ComputerSystemProduct");
     
                    using (ManagementObjectSearcher searcher1 = new ManagementObjectSearcher(scope, query1))
                    {
                        foreach (ManagementObject queryObj in searcher1.Get())
                        {
                            lb_modele.Text = queryObj["name"].ToString();
                            lb_servtag.Text = queryObj["IdentifyingNumber"].ToString();
                            lb_fabricant.Text = queryObj["Vendor"].ToString();
                        }
                    }
                }
                catch (ManagementException f)
                {
                    MessageBox.Show(f.Message);
                }
    J'aimerais pouvoir gérer l'exception qui se produit lorsque la valeur de tb_nompcX5 n'existe pas.

    Merci d'avance.

  2. #2
    Max
    Max est déconnecté
    Expert confirmé

    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 : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

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

    Informations forums :
    Inscription : Mai 2007
    Messages : 2 954
    Par défaut
    Citation Envoyé par Theka Voir le message
    J'aimerais pouvoir gérer l'exception qui se produit lorsque la valeur de tb_nompcX5 n'existe pas.
    Salut.

    Ce que tu veux obtenir c'est une exception plus précise ? Dans ce cas-là je pense que tu peux isoler cette partie du code dans un bloc try/catch à part entière :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ManagementScope scope = new ManagementScope("\\\\" + tb_nompcX5.Text + "\\root\\CIMV2", connection);
    scope.Connect();
    A partir de là, analyse l'exception renvoyée (je n'ai pas tous les détails en tête), et tu pourras voir si c'est un problème d'authentification, de droits, de la machine distante qui accepte ou pas les connexions WMI, ou si la machine à interroger n'existe pas (ce qui semble être ce que tu souhaites savoir) .

    Ou alors tu peux tenter un bête ping sur la machine saisie, et puis tu sauras si la machine répond ou pas.

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2005
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 77
    Par défaut
    Salut Eusebe19,

    J'avais déjà essayer d'isoler cette partie du code, mais le problème, pour lequel il y a sans doute une solution, (...mais j'apprend encore ...), c'est qu'une fois isolé le reste du code ne "capte" plus le nom "scope".

    Et du coup j'obtient une erreur a la compilation.

    Mais sinon oui, tu as très bien cerné ce que je souhaitais.

  4. #4
    Max
    Max est déconnecté
    Expert confirmé

    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 : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

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

    Informations forums :
    Inscription : Mai 2007
    Messages : 2 954
    Par défaut
    Citation Envoyé par Theka Voir le message
    J'avais déjà essayer d'isoler cette partie du code, mais le problème, pour lequel il y a sans doute une solution, (...mais j'apprend encore ...), c'est qu'une fois isolé le reste du code ne "capte" plus le nom "scope".
    Bon ça ce n'est pas bien méchant . Tu peux bidouiller :
    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
    try {
        ConnectionOptions connection = new ConnectionOptions();
        connection.Username = tb_usernameX5.Text;
        connection.Password = tb_passwordX5.Text;
        connection.Authority = tb_domaineX5.Text;
     
        ManagementScope scope = null;
        try {
            scope = new ManagementScope("\\\\" + tb_nompcX5.Text + "\\root\\CIMV2", connection);
            scope.Connect();
        }
        catch(ExceptionQueTuVeuxCatcher f) {
            MessageBox.Show(f.Message);
            // return;
        }
     
        // Ici soit tu testes IsConnected, soit tu mets un return plus haut pour sortir de ta méthode (en commentaire)
        if (scope != null && scope.IsConnected) {
            ObjectQuery query1 = new ObjectQuery("SELECT * FROM WIN32_ComputerSystemProduct");
     
            using (ManagementObjectSearcher searcher1 = new ManagementObjectSearcher(scope, query1)) {
                foreach (ManagementObject queryObj in searcher1.Get()) {
                    lb_modele.Text = queryObj["name"].ToString();
                    lb_servtag.Text = queryObj["IdentifyingNumber"].ToString();
                    lb_fabricant.Text = queryObj["Vendor"].ToString();
                }
            }
        }
    }
    catch (ManagementException f) {
        MessageBox.Show(f.Message);
    }

  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2005
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 77
    Par défaut
    Merci.

    Je vais essayer ça de suite.

Discussions similaires

  1. [WD18] Metre une colonne d'une Table sur une ligne d'une autre Table
    Par Totophe2 dans le forum WinDev
    Réponses: 2
    Dernier message: 22/11/2013, 12h58
  2. Réponses: 1
    Dernier message: 30/08/2011, 09h53
  3. probleme avec l'appui sur une touche sur une jframe ou jdialog
    Par jeanfeu dans le forum Agents de placement/Fenêtres
    Réponses: 1
    Dernier message: 05/08/2008, 16h14
  4. [VBA Excel] Appliquer une macro sur une celulle contenant une valeur
    Par tchauviere dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 21/01/2008, 10h21
  5. Réponses: 3
    Dernier message: 16/01/2006, 16h02

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