Classe .net listant les adresses mac d'une machine - compatible xp/2000/nt

Soyez le premier à donner votre avis sur cette source.

Snippet vu 15 803 fois - Téléchargée 37 fois

Contenu du snippet

Cette classe vous permettra de lister toutes les adresses mac d'une machine qu'elle soit local ou distante. Elle utilise les methode WMI proposées par le frameWork.

Source / Exemple :


' -------------------------------------------------
' Exemple d'utilisation dans un projet :
' -------------------------------------------------

        Dim p As Integer
        Dim mac As New MacAdresses
        For p = 0 To mac.Count
            MsgBox(mac.Item(p))
        Next

' ------------------------------------------------------------
' Exemple d'utilisation sur une machine distante :
' ------------------------------------------------------------

        Dim p As Integer
        Dim mac As New MacAdresses("NomMachine", "UserName", "Password")
        For p = 0 To mac.Count
            MsgBox(mac.Item(p))
        Next

' Voici donc cette classe

    Private Class MacAdresses
        Dim i As Integer
        Dim Adresses() As String

        Public Sub New(Optional ByVal MachineName As String = "localhost", Optional ByVal UserName As String = "", Optional ByVal Password As String = "")
            Dim co As New System.Management.ConnectionOptions
            Dim oq As System.Management.ObjectQuery
            Dim query As System.Management.ManagementObjectSearcher
            Dim ms As System.Management.ManagementScope
            Dim queryCollection As System.Management.ManagementObjectCollection
            Dim MonMO As System.Management.ManagementObject
            Dim j As Integer
            Dim doublons As Boolean

            If UserName <> "" And Password <> "" Then
                co.Username = UserName
                co.Password = Password
            End If

            Try
                ms = New System.Management.ManagementScope("\\" + MachineName + "\root\cimv2", co)
                oq = New System.Management.ObjectQuery("SELECT MACAddress FROM Win32_NetworkAdapter")
                query = New System.Management.ManagementObjectSearcher(ms, oq)
                queryCollection = query.Get()
                i = 0
                For Each MonMO In queryCollection
                    If Not MonMO("MACAddress") Is Nothing Then
                        doublons = False
                        For j = 0 To i - 1
                            If Adresses(j) = MonMO("MACAddress") Then
                                doublons = True
                                Exit For
                            End If
                        Next
                        If Not doublons Then
                            ReDim Adresses(i)
                            Adresses(i) = MonMO("MACAddress")
                            i = i + 1
                        End If
                    End If
                Next
            Catch ex As Exception
            End Try
        End Sub

        ReadOnly Property Count() As Integer
            Get
                Return i
            End Get
        End Property

        Public Function Item(ByVal index As Integer) As String
            If index > -1 And index < i Then
                Return Adresses(index)
            End If
        End Function
    End Class

Conclusion :


Pour plus de détails sur la classe WMI allez à cette adresse :
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wmisdk/wmi/win32_networkadapter.asp

Je tiens à remercier Romelard Fabrice (Alias F___) pour sa source DotNetSysInfo qui se trouve à cette adresse :
http://www.aspfr.com/code.aspx?ID=24137

Vraiment trés riche :)

A voir également

Ajouter un commentaire

Commentaires

cs_fabrice69
Messages postés
1766
Date d'inscription
jeudi 12 octobre 2000
Statut
Modérateur
Dernière intervention
11 décembre 2013
4 -
Cette source même si elle est bien devrait plutot être sur le site de vbfrance. C'est une classe .NET.

De plus le WMI est spécifique lorsqu'on cherche à l'interroger et nécessite des droits particuliers qui ne sont pas attribués par défaut au compte exécutant aspnet.

Alors que dans le cas d'une Winform c'est beaucoup plus simple car cela utilise le compte de l'utilisateur courant.

Romelard Fabrice.
aKheNathOn
Messages postés
285
Date d'inscription
dimanche 22 juillet 2001
Statut
Modérateur
Dernière intervention
5 décembre 2013
-
Lol, oui je viens de m'en rendre compte. Ce n'est pas du tout spécifique à l'asp, mais bossant sur un projet ASP, j'ai pas vraiment cogité, et je l'ait mis sur ASPFR. Pour ce qui est des droits, t'as tout à fait raison, mais je pense que c'est pour cette raison qu'on à les paramétres UserName et Password, mais je saurais pas te dire s'ils servent à ouvrir des droits en local.

Comme tu vois, j'ai fais un petit copier/coller de ta source et je lui ait apporté quelques modifications pour mes besoins spécifiques. J'espére que tu m'en veut pas :).

Bonne prog et à+, akh
cs_fabrice69
Messages postés
1766
Date d'inscription
jeudi 12 octobre 2000
Statut
Modérateur
Dernière intervention
11 décembre 2013
4 -
Aucun problème pour ca de mon coté.

Pour la connexion sur un serveur distant, aucun problème avec les droits (puisque tu dois fournir le compte pour celui-ci).
En revanche, pour la connexion en Local (le paramètre par défaut de ton serveur), c'est la qu'il prend le compte exécutant aspnet. De ce fait, il est obligatoire que ce compte ait les droit de travailler avec wmi.

En localhost, tu ne peux pas fournir de compte/mdp différent de celui exécutant l'application. Il est aussi possible d'utiliser l'impersonate pour spécifier le compte que doit utiliser le site WEB sur la page où l'ensempble du site.

Romelard Fabrice.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.