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

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

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.