WMI - Informations sur machine d'un réseau - Vista bloque...

jullouyot_46 Messages postés 43 Date d'inscription jeudi 9 décembre 2004 Statut Membre Dernière intervention 11 octobre 2013 - 27 janv. 2009 à 11:55
jullouyot_46 Messages postés 43 Date d'inscription jeudi 9 décembre 2004 Statut Membre Dernière intervention 11 octobre 2013 - 27 janv. 2009 à 14:50
Bonjour,


je réalise une petite appli dans le but de visualiser les machines de
mon domaine, et peut être pas la suite, pourvoir les administrer à
distance.

Je suis dans un domaine AD, 2003 serveur et développe sur .Net 2008.


Je me sers de WMI (pas des masses des masses d'info dessus...) et ça
fonctionne assez bien pour les serveurs (2000 et 2003) mais pas pour
les postes sous vista. Je désactive le pare feu Vista, et là, ça
fonctionne...


Je dispose d'une listbox1, à gauche, avec les noms de toutes les machines du domaine.

ma listbox2, à droite, affiche le résultat des actions lancées par des boutons placés au centre.

Ici, j'ai mis l'exemple du bouton "capacités des disques"


#Region "Déclarations"

    'SYSTEM.MANAGEMENT

    Dim myConnectionOptions As System.Management.ConnectionOptions

    Dim myManagementScope As System.Management.ManagementScope

    Dim myObjectSearcher As System.Management.ManagementObjectSearcher

    Dim myObjectCollection As System.Management.ManagementObjectCollection

    Dim myObject As System.Management.ManagementObject

    Dim aObjectQuery As System.Management.ObjectQuery

#End Region


'Procedure de connexion à la machine monServeur placée en paramètre

    Private Sub Connexion(ByVal monServeur As String)

        Try

            Dim ChaineDeConnexion As String = ""

            With myConnectionOptions

                .Username = Domaine & "" & Utilisateur

                .Password = MotDePasse

                .Impersonation = System.Management.ImpersonationLevel.Impersonate

                .Authentication = AuthenticationLevel.Connect

            End With

         

            ChaineDeConnexion = "\" & monServeur & "\root\cimv2"

            myManagementScope = New System.Management.ManagementScope(ChaineDeConnexion, myConnectionOptions)

            '* connection au WMI namespace

            myManagementScope.Connect()

            If myManagementScope.IsConnected = False Then

                MessageBox.Show("Impossible de se connecter au namespace WMI")

            End If

        Catch ex As Exception

            MessageBox.Show("Erreur générale: " & ex.Message)

        End Try

    End Sub


'Bouton1: va chercher la capacité des disques durs.

'capacités Disques

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Try

            If ListBox1.SelectedItem Is Nothing Then

                MessageBox.Show("Vous devez sélectionner une machine du réseau")

            Else

                ListBox2.Items.Clear()

                Connexion(ListBox1.SelectedItem.ToString)

                EspaceDisque()

            End If

        Catch ex As Exception

            MessageBox.Show("Erreur générale: " & ex.Message)

        End Try

    End Sub


'fonction associée:

Private Sub EspaceDisque()

        'La classe ObjectQuery représente une requête de gestion qui retourne des instances ou des classes

        aObjectQuery = New System.Management.ObjectQuery("select * from Win32_LogicalDisk where DriveType=3")


        'La classe ManagementObjectSearcher permet d'extraire une
collection d'objets de gestion, en fonction de la requête spécifiée
lors de son instanciation par le paramètre ObjectQuery ou directement
par une string si l'on " code en dur ".

        myObjectSearcher = New ManagementObjectSearcher(myManagementScope, aObjectQuery)


        'ManagementObjectCollection représente différentes collections d'objets de gestion extraits via WMI.

        myObjectCollection = myObjectSearcher.Get()


        myObject = New System.Management.ManagementObject


        For Each myObject In myObjectCollection

            Dim EspaceTotal As Double = myObject.GetPropertyValue("size") / (1024 * 1024)

            Dim EspaceLibre As Double = myObject.GetPropertyValue("freespace") / (1024 * 1024)

            Dim PourcentageUtilisé As Double = myObject.GetPropertyValue("freespace") * 100 / myObject.GetPropertyValue("size")


            ListBox2.Items.Add("nom: " &
myObject.GetPropertyValue("name").ToString() & "(" &
myObject.GetPropertyValue("VolumeName").ToString() & ")")

            If EspaceTotal >= 1000 Then

                EspaceTotal = EspaceTotal / 1024

                ListBox2.Items.Add("--> taille du disque: " & Round(EspaceTotal, 2) & " Go")

            Else

                ListBox2.Items.Add("--> taille du disque: " & Round(EspaceTotal, 2) & " Mo")

            End If

            If EspaceLibre >= 1000 Then

                EspaceLibre = EspaceLibre / 1024

                ListBox2.Items.Add("--> espace disponible: " &
Round(EspaceLibre, 2) & " Go (" & Round(PourcentageUtilisé, 2)
& ") %")

            Else

                ListBox2.Items.Add("--> espace disponible: " &
Round(EspaceLibre, 2) & " Mo (" & Round(PourcentageUtilisé, 2)
& ") %")

            End If

            ListBox2.Items.Add("")

        Next

    End Sub


Pour info, quand je sélectionne dans ma liste PC XP Pro SP2, avec le pare feu installé ça passe...

Y a que Vista qui m'emm**** !!


Si quelqu'un a une idée... merci !

Julien

1 réponse

jullouyot_46 Messages postés 43 Date d'inscription jeudi 9 décembre 2004 Statut Membre Dernière intervention 11 octobre 2013
27 janv. 2009 à 14:50
Je pense avoir trouvé...
sur les postes Vista, et à priori, aussi sur les postes XP SP2, il faut autoriser l'exception d'administration à distance entrante, comme l'explique l'article:
http://support.microsoft.com/default.aspx/kb/875605

bizarre, car par défaut, nous configurons XP et Vista de façons à ce qu'on puisse en prendre le controle à distance... D'ailleurs la connexion RDP se fait correctement !

maintenant, comment déployer ça sur mon domaine sans me taper poste par poste... par GPO ?
0