1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur .NET
    Inscrit en
    février 2012
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : février 2012
    Messages : 15
    Points : 10
    Points
    10

    Par défaut VB.NET / WMI - Classe Win32_NetworkConnection ne retourne pas de résultat

    Bonsoir,

    J'espère poster au bon endroit...

    J'utilise WMI Code creator pour générer le code me permettant de lister les lecteurs réseau et leurs status.
    Lorsque j'execute le code directement via WMI Code Creator ou en executant un script .vbs, j'obtiens bien le resultat recherché:
    Nom : cmd_.png
Affichages : 40
Taille : 17,1 Ko

    Mais si j’exécute le même code depuis mon application, Searcher.Get() ne me renvoie rien.
    Y a-t-il une raison?

    Merci d'avance.

    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
     
     
    Imports System
    Imports System.Management
    Imports System.Windows.Forms
     
    .....
     
      Try
                Dim searcher As New ManagementObjectSearcher( _
                    "root\CIMV2", _
                    "SELECT * FROM Win32_NetworkConnection")
     
                For Each queryObj As ManagementObject In searcher.Get()
     
                    Console.WriteLine("-----------------------------------")
                    Console.WriteLine("Win32_NetworkConnection instance")
                    Console.WriteLine("-----------------------------------")
                    Console.WriteLine("ConnectionState: {0}", queryObj("ConnectionState"))
                    Console.WriteLine("LocalName: {0}", queryObj("LocalName"))
                    Console.WriteLine("Name: {0}", queryObj("Name"))
                    Console.WriteLine("Status: {0}", queryObj("Status"))
                Next
            Catch err As ManagementException
                MessageBox.Show("An error occurred while querying for WMI data: " & err.Message)
            End Try

  2. #2
    Membre expert
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    octobre 2008
    Messages
    1 551
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : octobre 2008
    Messages : 1 551
    Points : 3 188
    Points
    3 188
    Billets dans le blog
    6

    Par défaut

    Salut,

    Peut-être parce que tu as placés Console.Writeline dans une appli de type Winform.......

    Dans un seconds temps il faut executer ton appli et/ou projet avec elevation de privilèges .......

  3. #3
    Membre à l'essai
    Homme Profil pro
    Développeur .NET
    Inscrit en
    février 2012
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : février 2012
    Messages : 15
    Points : 10
    Points
    10

    Par défaut

    Bonsoir Wallace1,

    Merci d'avoir pris le temps de me répondre.

    Erreur de ma part sur le copier/coller du code en effet, mais le principe reste le même.

    Même en exécutant en temps qu'administrateur, je n'obtiens pas le résultat escompté. Une autre piste?
    Je ne comprends pas pourquoi cette requete ne renvoie rien sous VB.net alors que cette même requête dans un script VBS fonctionne parfaitement...

    Nom : result.png
Affichages : 26
Taille : 34,2 Ko

    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
     
     
    Imports System.Management
    Imports System.Management.Instrumentation
     
    -------------------
    -------------------
     
            Dim scope As System.Management.ManagementScope
            Dim query As System.Management.ObjectQuery
            Dim result As ManagementObjectCollection
            Dim searcher As ManagementObjectSearcher
     
            Try
                scope = New System.Management.ManagementScope("\\.\root\cimv2")
                query = New System.Management.ObjectQuery("SELECT * FROM Win32_NetworkConnection")
                searcher = New ManagementObjectSearcher(scope, query)
     
                result = searcher.Get
                For Each mo As ManagementObject In result
                    Dim LocalName = mo("LocalName")
                    Dim ConnectionState = mo("ConnectionState")
                    Dim Status = mo("Status")
                    MsgBox(LocalName & vbCrLf & ConnectionState & vbCrLf & Status)
                Next
     
            Catch ex As Exception
                MsgBox(ex.Message)
            End Try

  4. #4
    Membre expert
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    octobre 2008
    Messages
    1 551
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : octobre 2008
    Messages : 1 551
    Points : 3 188
    Points
    3 188
    Billets dans le blog
    6

    Par défaut

    Bonjour,

    Je viens de tester chez moi et ca fonctionne parfaitement bien dans un projet de type Winform (Nom : Screen.png
Affichages : 20
Taille : 40,6 Ko) :

    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
     
        Try
                Using searcher As New ManagementObjectSearcher("root\CIMV2", "SELECT * FROM Win32_NetworkConnection")
                    For Each queryObj As ManagementObject In searcher.Get()
                        MsgBox("Win32_NetworkConnection instance" & vbNewLine &
                               "-----------------------------------" & vbNewLine &
                               String.Format("ConnectionState: {0}", queryObj("ConnectionState")) & vbNewLine &
                               String.Format("LocalName: {0}", queryObj("LocalName")) & vbNewLine &
                               String.Format("Name: {0}", queryObj("Name")) & vbNewLine &
                               String.Format("Status: {0}", queryObj("Status")))
                    Next
                End Using
            Catch ex As Exception
                MsgBox(ex.ToString)
            End Try
    Il y a qqch qui cloche de ton côté !!

    Montres moi le code (COMPLET) de ta classe dans laquelle se situe ta routine "Button3_Click".....

  5. #5
    Membre à l'essai
    Homme Profil pro
    Développeur .NET
    Inscrit en
    février 2012
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : février 2012
    Messages : 15
    Points : 10
    Points
    10

    Par défaut

    Bonjour, (et merci encore)

    Je viens de tester l’exécutable généré par Visual Studio sur un autre ordinateur (OS:Win7Pro) et cela fonctionne parfaitement.
    Donc en effet, le problème vient de mon PC.

    Depuis que j'ai désactivé le pare feu Windows, exécuté l'application (en local sur mon PC), réactivé le pare feu, cela fonctionne également mais uniquement lorsque j'utilise l’exécutable (debug et/ou Release) généré par Visual Studio .
    Mais cela ne fonctionne toujours pas depuis Visual Studio... Ce qui est problématique pour le débogage...

    Une dernière idée?

  6. #6
    Membre expert
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    octobre 2008
    Messages
    1 551
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : octobre 2008
    Messages : 1 551
    Points : 3 188
    Points
    3 188
    Billets dans le blog
    6

    Par défaut

    Citation Envoyé par oliviera63 Voir le message
    Mais cela ne fonctionne toujours pas depuis Visual Studio... Ce qui est problématique pour le débogage...

    Une dernière idée?
    Comme je te l'ai déjà dis plus haut...... :

    IL FAUT PARAMETRER TON PROJET DE MANIERE A CE QUE L'EXECUTABLE GENERE SOIT EXECUTE AVEC ELEVATION DE PRIVILEGES

    Le fichier MANIFEST :

    Nom : 1.png
Affichages : 16
Taille : 39,4 Ko
    Nom : 2.png
Affichages : 16
Taille : 97,2 Ko

    Tu fermes l'EDI et tu relances ton projet, lors du prochain debug (avec génération) il te proposera de relancer le projet pour qu'il soit exécuté avec l'élévation. Fin de l'histoire...

    A+

  7. #7
    Membre à l'essai
    Homme Profil pro
    Développeur .NET
    Inscrit en
    février 2012
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : février 2012
    Messages : 15
    Points : 10
    Points
    10

    Par défaut

    Bonjour,

    Apparemment ce n'est pas si simple. lorsque j'élève les privilèges, ça ne fonctionne pas (mieux) depuis Visual Studio, mais en plus cela ne fonctionne plus lorsque j’exécute le .exe
    J'ai copié mon projet sur un autre PC et là tout fonctionne parfaitement (sans élévation de privilèges).

    J'ai créé un utilisateur local sur mon PC (qui est sur un domaine). J'ai démarré le projet depuis cet utilisateur local et là tout fonctionne parfaitement.
    J'en conclut qu' il s'agit probablement d'un problème d'identification lié à ma session.

    Merci pour l'aide apportée.

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

Discussions similaires

  1. Requete DELETE qui ne retourne pas de résultat
    Par Duddy dans le forum Développement
    Réponses: 8
    Dernier message: 24/09/2012, 18h44
  2. Une requête qui ne retourne pas de résultat
    Par beegees dans le forum PDO
    Réponses: 0
    Dernier message: 25/11/2011, 19h18
  3. e.newvalues ne retourne pas de résultat
    Par amen_1919 dans le forum ASP.NET
    Réponses: 2
    Dernier message: 12/06/2009, 17h53
  4. oci_num_rows ne retourne pas de résultat (0)
    Par osmoze dans le forum PHP & Oracle
    Réponses: 9
    Dernier message: 19/04/2006, 18h13
  5. [VB.NET] DataSet qui ne retourne pas de résultat
    Par Lois dans le forum Windows Forms
    Réponses: 4
    Dernier message: 02/06/2004, 18h07

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