begin process at 2012 02 14 07:45:22
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

API

 > ENUMERER LES MACHINES DE VOTRE RESEAU

ENUMERER LES MACHINES DE VOTRE RESEAU


 Information sur la source

Note :
10 / 10 - par 3 personnes
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :API Source .NET ( DotNet ) Classé sous :wnetenumresource, wnetopenenum, reseau, scan, network Niveau :Initié Date de création :24/08/2007 Date de mise à jour :27/01/2010 10:58:18 Vu / téléchargé :14 411 / 853

Auteur : elguevel

Ecrire un message privé
Site perso
Commentaire sur cette source (4)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
Voila une classe toute bete et sans pretention, qui est une adaptation en .Net d'un code que j'avais fait en Delphi, et qui permet de chercher toute les machines de votre reseau via l'API WNetEnumResource.

Source

  • '----------------------------------------------------------------------------
  • ' Enumération des machines de votre réseau
  • ' Ecrit par LEVEUGLE Damien
  • ' Elguevel Software (c) 2010
  • '
  • ' Mise à jour de code pour CodeSource le 27/01/2010
  • '----------------------------------------------------------------------------
  • Imports System.Runtime.InteropServices
  • Imports System.Runtime.InteropServices.Marshal
  • Imports System.Threading
  • ''' <summary>
  • ''' Classe de recherche des machines d'un réseau
  • ''' </summary>
  • ''' <auteur>LEVEUGLE Damien</auteur>
  • ''' <remarks></remarks>
  • Public Class ElgNetwork
  • #Region "Evenements"
  • Public Event OnSuccess(ByVal sender As Object, ByVal e As EventArgs)
  • #End Region
  • #Region "Attributs"
  • Private _ListMachine As List(Of String)
  • Private _Provider As String = ""
  • #End Region
  • #Region "Proprietés"
  • ''' <summary>
  • ''' Liste des machines trouvées
  • ''' </summary>
  • ''' <remarks></remarks>
  • Public ReadOnly Property Machines() As List(Of String)
  • Get
  • Return _ListMachine
  • End Get
  • End Property
  • ''' <summary>
  • ''' Provider
  • ''' </summary>
  • ''' <remarks>Vous pouvez specifier ici le nom de votre réseau/domaine</remarks>
  • Public Property Provider() As String
  • Get
  • Return _Provider
  • End Get
  • Set(ByVal value As String)
  • _Provider = value
  • End Set
  • End Property
  • #End Region
  • #Region "Structures"
  • Public Structure NETRESOURCE
  • Dim dwScope As Integer
  • Dim dwType As Integer
  • Dim dwDisplayType As Integer
  • Dim dwUsage As Integer
  • Dim lpLocalName As String
  • Dim lpRemoteName As String
  • Dim lpComment As String
  • Dim lpProvider As String
  • End Structure
  • #End Region
  • #Region "Constantes"
  • Private Const RESOURCEDISPLAYTYPE_DOMAIN = &H1
  • Private Const RESOURCE_GLOBALNET = &H2
  • Private Const RESOURCETYPE_DISK = 1
  • Private Const RESOURCE_CONTEXT = 5
  • Private Const RESOURCEUSAGE_CONTAINER = &H2
  • Private Const RESOURCETYPE_ANY = &H0
  • Private Const ERROR_NO_MORE_ITEMS = 259&
  • Private Const BUFFER_SIZE = 131072
  • #End Region
  • #Region "Importation librairies (API Win32)"
  • ''' <documentation>
  • ''' http://msdn.microsoft.com/en-us/library/aa385478(VS.85).aspx
  • ''' </documentation>
  • <DllImport("mpr.dll", CharSet:=CharSet.Auto)> _
  • Public Shared Function WNetOpenEnumA(ByVal dwScope As Integer, ByVal dwType As Integer, ByVal dwUsage As Integer, ByRef lpNetResource As NETRESOURCE, ByRef lphEnum As Integer) As Integer
  • End Function
  • ''' <documentation>
  • ''' http://msdn.microsoft.com/en-us/library/aa385449(VS.85).aspx
  • ''' </documentation>
  • <DllImport("mpr.dll", CharSet:=CharSet.Auto)> _
  • Public Shared Function WNetEnumResourceA(ByVal hEnum As Integer, ByRef lpcCount As Integer, ByVal lpBuffer As Integer, ByRef lpBufferSize As Integer) As Integer
  • End Function
  • ''' <documentation>
  • ''' http://msdn.microsoft.com/en-us/library/aa385431(VS.85).aspx
  • ''' </documentation>
  • <DllImport("mpr.dll", CharSet:=CharSet.Auto)> _
  • Public Shared Function WNetCloseEnum(ByVal hEnum As Integer) As Integer
  • End Function
  • #End Region
  • #Region "Méthodes"
  • ''' <summary>
  • ''' Recherche les machines du reseau et les stocks dans _ListMachine
  • ''' </summary>
  • ''' <remarks></remarks>
  • Public Sub Chercher()
  • Me._ListMachine.Clear()
  • Dim Resource As NETRESOURCE = Nothing
  • Dim pBuffer As IntPtr = AllocHGlobal(BUFFER_SIZE)
  • Dim Buffer As Integer = pBuffer.ToInt32
  • Dim NetCount As Integer = -1
  • Dim NetHandle As Integer = 0
  • ' On rempli la structure NetResource
  • Resource.dwDisplayType = RESOURCEDISPLAYTYPE_DOMAIN
  • Resource.dwScope = RESOURCE_GLOBALNET
  • Resource.dwType = RESOURCETYPE_ANY
  • Resource.dwUsage = RESOURCEUSAGE_CONTAINER
  • Resource.lpProvider = Me._Provider
  • ' http://msdn.microsoft.com/en-us/library/aa385478(VS.85).aspx
  • Dim RetourWNetOpenEnum As Integer = WNetOpenEnumA(RESOURCE_CONTEXT, RESOURCETYPE_DISK, 0, Resource, NetHandle)
  • Thread.Sleep(10)
  • ' Si erreur on stop immédiatement
  • If (RetourWNetOpenEnum <> 0) Then
  • If (NetHandle <> 0) Then
  • WNetCloseEnum(NetHandle)
  • End If
  • Return
  • End If
  • Dim RetourWNetEnumResource As Integer = 0
  • Do
  • ' http://msdn.microsoft.com/en-us/library/aa385449(VS.85).aspx
  • RetourWNetEnumResource = WNetEnumResourceA(NetHandle, NetCount, Buffer, BUFFER_SIZE)
  • Thread.Sleep(10)
  • ' Si fini on libère la mémoire, et on stop
  • If ((RetourWNetEnumResource > 0) And (RetourWNetEnumResource <> ERROR_NO_MORE_ITEMS)) Then
  • FreeHGlobal(pBuffer)
  • WNetCloseEnum(NetHandle)
  • RaiseEvent OnSuccess(Me, Nothing)
  • Return
  • End If
  • For Boucle As Integer = 1 To NetCount
  • Dim iPtr As New IntPtr(Buffer) ' 4
  • Resource = CType(PtrToStructure(iPtr, GetType(NETRESOURCE)), NETRESOURCE) ' 32
  • Buffer += SizeOf(Resource) ' Incremente position pointeur
  • ' Ajoute nom de la machine à la collection.
  • If (Not Resource.lpRemoteName Is Nothing) Then
  • Dim Poste As String = Resource.lpRemoteName
  • ' Ici le SubString permet de virer les "\\"
  • Me._ListMachine.Add(Poste.Trim.Substring(2))
  • End If
  • Next
  • Loop While (RetourWNetEnumResource <> ERROR_NO_MORE_ITEMS)
  • FreeHGlobal(pBuffer)
  • ' http://msdn.microsoft.com/en-us/library/aa385431(VS.85).aspx
  • WNetCloseEnum(NetHandle)
  • ' On est arrivé à la fin, on lance l'evenement
  • Thread.Sleep(10)
  • RaiseEvent OnSuccess(Me, Nothing)
  • End Sub
  • #End Region
  • #Region "Constructeur"
  • ''' <summary>
  • ''' Constructeur par defaut
  • ''' </summary>
  • ''' <remarks></remarks>
  • Public Sub New()
  • _ListMachine = New List(Of String)
  • End Sub
  • ''' <summary>
  • ''' Constructeur surchargé
  • ''' </summary>
  • ''' <remarks></remarks>
  • Public Sub New(ByVal Provider As String)
  • MyClass.New()
  • _Provider = Provider
  • End Sub
  • #End Region
  • End Class
'----------------------------------------------------------------------------
'   Enumération des machines de votre réseau
'   Ecrit par LEVEUGLE Damien
'   Elguevel Software (c) 2010
'
'   Mise à jour de code pour CodeSource le 27/01/2010
'----------------------------------------------------------------------------

Imports System.Runtime.InteropServices
Imports System.Runtime.InteropServices.Marshal
Imports System.Threading

''' <summary>
''' Classe de recherche des machines d'un réseau
''' </summary>
''' <auteur>LEVEUGLE Damien</auteur>
''' <remarks></remarks>
Public Class ElgNetwork

#Region "Evenements"

    Public Event OnSuccess(ByVal sender As Object, ByVal e As EventArgs)

#End Region

#Region "Attributs"

    Private _ListMachine As List(Of String)
    Private _Provider As String = ""

#End Region

#Region "Proprietés"

    ''' <summary>
    ''' Liste des machines trouvées
    ''' </summary>
    ''' <remarks></remarks>
    Public ReadOnly Property Machines() As List(Of String)
        Get
            Return _ListMachine
        End Get
    End Property

    ''' <summary>
    ''' Provider
    ''' </summary>
    ''' <remarks>Vous pouvez specifier ici le nom de votre réseau/domaine</remarks>
    Public Property Provider() As String
        Get
            Return _Provider
        End Get
        Set(ByVal value As String)
            _Provider = value
        End Set
    End Property

#End Region

#Region "Structures"

    Public Structure NETRESOURCE
        Dim dwScope As Integer
        Dim dwType As Integer
        Dim dwDisplayType As Integer
        Dim dwUsage As Integer
        Dim lpLocalName As String
        Dim lpRemoteName As String
        Dim lpComment As String
        Dim lpProvider As String
    End Structure

#End Region

#Region "Constantes"

    Private Const RESOURCEDISPLAYTYPE_DOMAIN = &H1    
    Private Const RESOURCE_GLOBALNET = &H2
    Private Const RESOURCETYPE_DISK = 1
    Private Const RESOURCE_CONTEXT = 5
    Private Const RESOURCEUSAGE_CONTAINER = &H2
    Private Const RESOURCETYPE_ANY = &H0
    Private Const ERROR_NO_MORE_ITEMS = 259&

    Private Const BUFFER_SIZE = 131072

#End Region

#Region "Importation librairies (API Win32)"

    ''' <documentation>
    ''' http://msdn.microsoft.com/en-us/library/aa385478(VS.85).aspx
    ''' </documentation>
    <DllImport("mpr.dll", CharSet:=CharSet.Auto)> _
    Public Shared Function WNetOpenEnumA(ByVal dwScope As Integer, ByVal dwType As Integer, ByVal dwUsage As Integer, ByRef lpNetResource As NETRESOURCE, ByRef lphEnum As Integer) As Integer
    End Function

    ''' <documentation>
    ''' http://msdn.microsoft.com/en-us/library/aa385449(VS.85).aspx
    ''' </documentation>
    <DllImport("mpr.dll", CharSet:=CharSet.Auto)> _
    Public Shared Function WNetEnumResourceA(ByVal hEnum As Integer, ByRef lpcCount As Integer, ByVal lpBuffer As Integer, ByRef lpBufferSize As Integer) As Integer
    End Function

    ''' <documentation>
    ''' http://msdn.microsoft.com/en-us/library/aa385431(VS.85).aspx
    ''' </documentation>
    <DllImport("mpr.dll", CharSet:=CharSet.Auto)> _
    Public Shared Function WNetCloseEnum(ByVal hEnum As Integer) As Integer
    End Function

#End Region

#Region "Méthodes"

    ''' <summary>
    ''' Recherche les machines du reseau et les stocks dans _ListMachine
    ''' </summary>
    ''' <remarks></remarks>
    Public Sub Chercher()

        Me._ListMachine.Clear()

        Dim Resource As NETRESOURCE = Nothing
        Dim pBuffer As IntPtr = AllocHGlobal(BUFFER_SIZE)
        Dim Buffer As Integer = pBuffer.ToInt32
        Dim NetCount As Integer = -1
        Dim NetHandle As Integer = 0

        ' On rempli la structure NetResource
        Resource.dwDisplayType = RESOURCEDISPLAYTYPE_DOMAIN
        Resource.dwScope = RESOURCE_GLOBALNET
        Resource.dwType = RESOURCETYPE_ANY
        Resource.dwUsage = RESOURCEUSAGE_CONTAINER
        Resource.lpProvider = Me._Provider

        ' http://msdn.microsoft.com/en-us/library/aa385478(VS.85).aspx
        Dim RetourWNetOpenEnum As Integer = WNetOpenEnumA(RESOURCE_CONTEXT, RESOURCETYPE_DISK, 0, Resource, NetHandle)

        Thread.Sleep(10)

        ' Si erreur on stop immédiatement
        If (RetourWNetOpenEnum <> 0) Then

            If (NetHandle <> 0) Then
                WNetCloseEnum(NetHandle)
            End If

            Return

        End If

        Dim RetourWNetEnumResource As Integer = 0

        Do
            ' http://msdn.microsoft.com/en-us/library/aa385449(VS.85).aspx
            RetourWNetEnumResource = WNetEnumResourceA(NetHandle, NetCount, Buffer, BUFFER_SIZE)

            Thread.Sleep(10)

            ' Si fini on libère la mémoire, et on stop
            If ((RetourWNetEnumResource > 0) And (RetourWNetEnumResource <> ERROR_NO_MORE_ITEMS)) Then

                FreeHGlobal(pBuffer)
                WNetCloseEnum(NetHandle)

                RaiseEvent OnSuccess(Me, Nothing)

                Return

            End If

            For Boucle As Integer = 1 To NetCount

                Dim iPtr As New IntPtr(Buffer)  ' 4

                Resource = CType(PtrToStructure(iPtr, GetType(NETRESOURCE)), NETRESOURCE)  ' 32
                Buffer += SizeOf(Resource) ' Incremente position pointeur

                ' Ajoute nom de la machine à la collection.
                If (Not Resource.lpRemoteName Is Nothing) Then

                    Dim Poste As String = Resource.lpRemoteName

                    ' Ici le SubString permet de virer les "\\"
                    Me._ListMachine.Add(Poste.Trim.Substring(2))

                End If

            Next

        Loop While (RetourWNetEnumResource <> ERROR_NO_MORE_ITEMS)

        FreeHGlobal(pBuffer)

        ' http://msdn.microsoft.com/en-us/library/aa385431(VS.85).aspx
        WNetCloseEnum(NetHandle)

        ' On est arrivé à la fin, on lance l'evenement
        Thread.Sleep(10)
        RaiseEvent OnSuccess(Me, Nothing)

    End Sub

#End Region

#Region "Constructeur"

    ''' <summary>
    ''' Constructeur par defaut
    ''' </summary>
    ''' <remarks></remarks>
    Public Sub New()

        _ListMachine = New List(Of String)

    End Sub

    ''' <summary>
    ''' Constructeur surchargé
    ''' </summary>
    ''' <remarks></remarks>
    Public Sub New(ByVal Provider As String)

        MyClass.New()

        _Provider = Provider

    End Sub

#End Region

End Class

 Conclusion

Notes, commentaires et surtout améliorations sont les bienvenues ...

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

27 janvier 2010 10:58:21 :
Amélioration de ce vieux code :-)

 Sources du même auteur

Source avec Zip Source avec une capture Source .NET (Dotnet) CLASSE POUR PILOTER EXCEL SIMPLEMENT
Source avec Zip Source avec une capture Source .NET (Dotnet) REMOTE KEYLOGGER
Source avec Zip Source avec une capture Source .NET (Dotnet) JEU DU MORPION .NET
Source avec Zip Source avec une capture Source .NET (Dotnet) CALCULATEUR DE RESISTANCE .NET
Source avec Zip Source avec une capture Source .NET (Dotnet) AFFICHEUR 7 SEGMENTS

 Sources de la même categorie

Source avec Zip Source .NET (Dotnet) .NET DEPENDENCY VIEWER : ARBRE DES DÉPENDANCES D'UN ASSEMBLY... par ShareVB
Source avec Zip Source .NET (Dotnet) UTILITAIRE SKYDRIVE par MasterShadows
Source avec Zip ROTATION RAPIDE D'IMAGE par trex70
Source avec Zip Source avec une capture ENUMERATION DES PORTS TCP ET IDENTIFCATION DU PROCESS (PID) ... par Renfield
Source avec Zip Source avec une capture MOUSE SPEED AND WEIGHT : RETOUR DE FORCE VIRTUEL ! par ScSami

 Sources en rapport avec celle ci

Source avec une capture LISTE DES PC DU RESEAU par alfamick
Source avec Zip Source .NET (Dotnet) SAVOIR SI L'ORDINATEUR EST CONNECTÉ À INTERNET EN VISUAL BAS... par clementgeek41
Source avec Zip Source .NET (Dotnet) OVERSOCK - CLASS SOCKET ASYNCHRONE MULTI-CLIENT AVEC INTER-T... par iLgend
Source avec Zip SAUVEGARDE DES DONNÉES D'UN RÉSEAU EN VBSCRIPT par vsgn
Source avec Zip Source .NET (Dotnet) MODIFIER PARAMÈTRES D'UN PORTABLE SUIVANT LE RESEAU par ravery

Commentaires et avis

Commentaire de benji2000 le 19/12/2008 14:18:49 10/10

Pas mal très simple d'utilisation 10/10
Bonne continuation

Commentaire de arnaud2006 le 01/06/2009 14:56:14 10/10

C'est simple, c'est clair, 10 sur 10

Commentaire de mafieulemouton le 26/01/2010 16:20:22 10/10

Propre, rapide et bien commenté. 10 sur 10.

Idée comme ca:
Comme pour utiliser ton code l'utilisateur est obligé de créer une instance de ta classe NetEnumerator, il aurait été intéressant de mettre en place un évènement genre NetworkComputerListModified

Commentaire de elguevel le 27/01/2010 11:00:40

Je vois que certains consultent encore cette vieille source, j'ai donc décidé de la mettre à jour !

J'ai même ajouté un evenement pour "Mafieulemouton"

Merci pour vos coms.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Scan reseau [ par Membraxe ] Salut a tous ,Je voudrais savoir comment faire pour avoir la liste des ordinateurs existantsur un reseau local et leurs adresse IP.Merci de me repondr version Os en reseau [ par Membraxe ] Salut ,je voudrais savoir comment fairepour recuperer sur les PC de mon reseau local les versions de windows.Merci d'avance Connexion disque reseau [ par Joël ] Bonjour,Je cherche le moyen de connecter un disque réseau.Merci beaucoup.Joël. stat reseau [ par bensniper ] comment peux-t-on faire des stat reseau, comment utiliser le snmp ? version windows en reseau local [ par Membraxe ] salut , je voudrais savoir comment recuperer la version des windows installer sur les PC de mon reseau localMerci d avance scan clavier [ par fabiin ] je voudrais savoir si il était possible de connaitre les touches du clavier pressé. mais cela n'import ou dans windows(PS: c très urgent)Merci pas ava Mac adresse en reseau [ par Membraxe ] Salut, je voudrais savoir comment recuperer la MAC adresse de chaque poste de mon reseau a partir d'un seul poste.merci d'avance problemes reseaux URGENT [ par funcmane ] bon voila je voudrait crer un morpion jouable en reseau (attention je dis reseau LAN) un reseau local koi du genrre 2 ordis ds une salle..bon voila j' RESEAUX PRBOBLEME SVP !!!! URGENT [ par funcmane ] bon voila je voudrait creer un morpion jouable en reseau (attention je dis reseau LAN) un reseau local koi du genre 2 ordis ds une salle..bon voila j' Source pour un petit scan [ par Sycho ] J'aimerais avoir des source pour fair un scansur " C:" , " Disquette A " , etc..et qui peux chercher plusieur mots en meme temps,mais qu'il sois ecrit


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 3,198 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales