IP et Nom de machines

Le
Rosalie Mignon
Bonjour

novice, je n'arrive pas a recenser les machines presentes sur mon reseau
local(4 pc) pour connaitre leur IP et nom de machine.
Le but etait de modifier ces valeurs avec mon programme installe sur une des
4 machines.

merci d'avance pour tous vos commentaires et aides
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Jean-marc
Le #15350941
Rosalie Mignon wrote:
Bonjour

novice, je n'arrive pas a recenser les machines presentes sur mon
reseau local(4 pc) pour connaitre leur IP et nom de machine.
Le but etait de modifier ces valeurs avec mon programme installe sur
une des 4 machines.

merci d'avance pour tous vos commentaires et aides



Hello,

pour afficher les noms des machines, c'est tout simple avec
la fonction netServerEnum, de la librairie "netapi32".

J'ai trouvé un bout de code qui liste les noms des machines
du réseau, je le cite ici in extenso.

Source :
http://www.developpez.net/forums/archive/index.php/t-7713.html

' --


Option Explicit



'Definition des constantes
Private Const MAX_PREFERRED_LENGTH As Long = -1
Private Const NERR_SUCCESS As Long = 0&
Private Const ERROR_MORE_DATA As Long = 234&
Private Const SV_TYPE_ALL As Long = &HFFFFFFFF
Private Const SV_PLATFORM_ID_OS2 As Long = 400
Private Const SV_PLATFORM_ID_NT As Long = 500

'Masque pour obtenir la version OS Majeure a partir de la variable version
globale
Private Const MAJOR_VERSION_MASK As Long = &HF

Private Type SERVER_INFO_100
sv100_platform_id As Long
sv100_name As Long
End Type

Private Declare Function NetServerEnum Lib "netapi32" _
(ByVal servername As Long, _
ByVal level As Long, _
buf As Any, _
ByVal prefmaxlen As Long, _
entriesread As Long, _
totalentries As Long, _
ByVal servertype As Long, _
ByVal domain As Long, _
resume_handle As Long) As Long

Private Declare Function NetApiBufferFree Lib "netapi32" _
(ByVal Buffer As Long) As Long

Private Declare Sub CopyMemory Lib "kernel32" _
Alias "RtlMoveMemory" _
(pTo As Any, uFrom As Any, _
ByVal lSize As Long)

Private Declare Function lstrlenW Lib "kernel32" _
(ByVal lpString As Long) As Long

Public Function GetServers(sDomain As String) As String

'liste de tous les serveurs dans un domaine

Dim bufptr As Long
Dim dwEntriesread As Long
Dim dwTotalentries As Long
Dim dwResumehandle As Long
Dim se100 As SERVER_INFO_100
Dim success As Long
Dim nStructSize As Long
Dim cnt As Long
Dim resultat As String

nStructSize = LenB(se100)
'la liste des noms est obtenue avec la fonction NetServerEnum
success = NetServerEnum(0&, _
100, _
bufptr, _
MAX_PREFERRED_LENGTH, _
dwEntriesread, _
dwTotalentries, _
SV_TYPE_ALL, _
0&, _
dwResumehandle)


If success = NERR_SUCCESS And _
success <> ERROR_MORE_DATA Then 'si tout se passe bien

For cnt = 0 To dwEntriesread - 1

CopyMemory se100, ByVal bufptr + (nStructSize * cnt), nStructSize
'on scanne le buffer en memoire et pour chaque entrée, conversion en String
resultat = resultat & GetPointerToByteStringW(se100.sv100_name) & "|"

Next

End If

'nettoyage du buffer que le système a reservé pour la liste des noms
Call NetApiBufferFree(bufptr)

'on retourne le string contenants les noms separés par des "|"
GetServers = resultat

End Function


Public Function GetPointerToByteStringW(ByVal dwData As Long) As String

'fonction auxilliare qui recoit un pointeur vers une chaine dans un buffer
interne
'Windows et la convertit en String exploitable en VB

Dim tmp() As Byte
Dim tmplen As Long

If dwData <> 0 Then

tmplen = lstrlenW(dwData) * 2

If tmplen <> 0 Then

ReDim tmp(0 To (tmplen - 1)) As Byte
CopyMemory tmp(0), ByVal dwData, tmplen
GetPointerToByteStringW = tmp

End If

End If

End Function

Private Sub Command1_Click()
Dim maliste As String

maliste = GetServers(vbNullString)
End Sub

' ----------------------


Pour obtenir en plus les IP, il suffit d'utiliser
GetHostbyname.
Il y a un exemple complet ici:
http://grafikm.developpez.com/vbreseau/Lecon4/

(j'ai pas testé, mais à vue de nez ça à l'air ok).

Il y a aussi du code ici, de meilleure qualité:
http://vbnet.mvps.org/index.html?code/network/ipaddress.htm

Bref avec tout ça, tu dervais avoir ton bonheur!

Bonne prog,


--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
mailto: remove '_no_spam_' ;
FAQ VB: http://faq.vb.free.fr/
Rosalie Mignon
Le #15350931
effectivement ca m'a l'air tout bon !!!

merci beaucoup


"Jean-marc" de news: 46b45dc8$0$14241$
Rosalie Mignon wrote:
Bonjour

novice, je n'arrive pas a recenser les machines presentes sur mon
reseau local(4 pc) pour connaitre leur IP et nom de machine.
Le but etait de modifier ces valeurs avec mon programme installe sur
une des 4 machines.

merci d'avance pour tous vos commentaires et aides



Hello,

pour afficher les noms des machines, c'est tout simple avec
la fonction netServerEnum, de la librairie "netapi32".

J'ai trouvé un bout de code qui liste les noms des machines
du réseau, je le cite ici in extenso.

Source :
http://www.developpez.net/forums/archive/index.php/t-7713.html

' --


Option Explicit



'Definition des constantes
Private Const MAX_PREFERRED_LENGTH As Long = -1
Private Const NERR_SUCCESS As Long = 0&
Private Const ERROR_MORE_DATA As Long = 234&
Private Const SV_TYPE_ALL As Long = &HFFFFFFFF
Private Const SV_PLATFORM_ID_OS2 As Long = 400
Private Const SV_PLATFORM_ID_NT As Long = 500

'Masque pour obtenir la version OS Majeure a partir de la variable version
globale
Private Const MAJOR_VERSION_MASK As Long = &HF

Private Type SERVER_INFO_100
sv100_platform_id As Long
sv100_name As Long
End Type

Private Declare Function NetServerEnum Lib "netapi32" _
(ByVal servername As Long, _
ByVal level As Long, _
buf As Any, _
ByVal prefmaxlen As Long, _
entriesread As Long, _
totalentries As Long, _
ByVal servertype As Long, _
ByVal domain As Long, _
resume_handle As Long) As Long

Private Declare Function NetApiBufferFree Lib "netapi32" _
(ByVal Buffer As Long) As Long

Private Declare Sub CopyMemory Lib "kernel32" _
Alias "RtlMoveMemory" _
(pTo As Any, uFrom As Any, _
ByVal lSize As Long)

Private Declare Function lstrlenW Lib "kernel32" _
(ByVal lpString As Long) As Long

Public Function GetServers(sDomain As String) As String

'liste de tous les serveurs dans un domaine

Dim bufptr As Long
Dim dwEntriesread As Long
Dim dwTotalentries As Long
Dim dwResumehandle As Long
Dim se100 As SERVER_INFO_100
Dim success As Long
Dim nStructSize As Long
Dim cnt As Long
Dim resultat As String

nStructSize = LenB(se100)
'la liste des noms est obtenue avec la fonction NetServerEnum
success = NetServerEnum(0&, _
100, _
bufptr, _
MAX_PREFERRED_LENGTH, _
dwEntriesread, _
dwTotalentries, _
SV_TYPE_ALL, _
0&, _
dwResumehandle)


If success = NERR_SUCCESS And _
success <> ERROR_MORE_DATA Then 'si tout se passe bien

For cnt = 0 To dwEntriesread - 1

CopyMemory se100, ByVal bufptr + (nStructSize * cnt), nStructSize
'on scanne le buffer en memoire et pour chaque entrée, conversion en
String
resultat = resultat & GetPointerToByteStringW(se100.sv100_name) & "|"

Next

End If

'nettoyage du buffer que le système a reservé pour la liste des noms
Call NetApiBufferFree(bufptr)

'on retourne le string contenants les noms separés par des "|"
GetServers = resultat

End Function


Public Function GetPointerToByteStringW(ByVal dwData As Long) As String

'fonction auxilliare qui recoit un pointeur vers une chaine dans un buffer
interne
'Windows et la convertit en String exploitable en VB

Dim tmp() As Byte
Dim tmplen As Long

If dwData <> 0 Then

tmplen = lstrlenW(dwData) * 2

If tmplen <> 0 Then

ReDim tmp(0 To (tmplen - 1)) As Byte
CopyMemory tmp(0), ByVal dwData, tmplen
GetPointerToByteStringW = tmp

End If

End If

End Function

Private Sub Command1_Click()
Dim maliste As String

maliste = GetServers(vbNullString)
End Sub

' ----------------------


Pour obtenir en plus les IP, il suffit d'utiliser
GetHostbyname.
Il y a un exemple complet ici:
http://grafikm.developpez.com/vbreseau/Lecon4/

(j'ai pas testé, mais à vue de nez ça à l'air ok).

Il y a aussi du code ici, de meilleure qualité:
http://vbnet.mvps.org/index.html?code/network/ipaddress.htm

Bref avec tout ça, tu dervais avoir ton bonheur!

Bonne prog,


--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
mailto: remove '_no_spam_' ;
FAQ VB: http://faq.vb.free.fr/




Rosalie Mignon
Le #15350921
tout fonctionne effectivement, merci

mais maintenant je voudrais modifier l'adresse IP et ces noms de machine à
distance.
C'est-a dire qu'a partir d'une machine, je puisse modifier
leur IP et nom a distance.

merci d'avance.


"Jean-marc" de news: 46b45dc8$0$14241$
Rosalie Mignon wrote:
Bonjour

novice, je n'arrive pas a recenser les machines presentes sur mon
reseau local(4 pc) pour connaitre leur IP et nom de machine.
Le but etait de modifier ces valeurs avec mon programme installe sur
une des 4 machines.

merci d'avance pour tous vos commentaires et aides



Hello,

pour afficher les noms des machines, c'est tout simple avec
la fonction netServerEnum, de la librairie "netapi32".

J'ai trouvé un bout de code qui liste les noms des machines
du réseau, je le cite ici in extenso.

Source :
http://www.developpez.net/forums/archive/index.php/t-7713.html

' --


Option Explicit



'Definition des constantes
Private Const MAX_PREFERRED_LENGTH As Long = -1
Private Const NERR_SUCCESS As Long = 0&
Private Const ERROR_MORE_DATA As Long = 234&
Private Const SV_TYPE_ALL As Long = &HFFFFFFFF
Private Const SV_PLATFORM_ID_OS2 As Long = 400
Private Const SV_PLATFORM_ID_NT As Long = 500

'Masque pour obtenir la version OS Majeure a partir de la variable version
globale
Private Const MAJOR_VERSION_MASK As Long = &HF

Private Type SERVER_INFO_100
sv100_platform_id As Long
sv100_name As Long
End Type

Private Declare Function NetServerEnum Lib "netapi32" _
(ByVal servername As Long, _
ByVal level As Long, _
buf As Any, _
ByVal prefmaxlen As Long, _
entriesread As Long, _
totalentries As Long, _
ByVal servertype As Long, _
ByVal domain As Long, _
resume_handle As Long) As Long

Private Declare Function NetApiBufferFree Lib "netapi32" _
(ByVal Buffer As Long) As Long

Private Declare Sub CopyMemory Lib "kernel32" _
Alias "RtlMoveMemory" _
(pTo As Any, uFrom As Any, _
ByVal lSize As Long)

Private Declare Function lstrlenW Lib "kernel32" _
(ByVal lpString As Long) As Long

Public Function GetServers(sDomain As String) As String

'liste de tous les serveurs dans un domaine

Dim bufptr As Long
Dim dwEntriesread As Long
Dim dwTotalentries As Long
Dim dwResumehandle As Long
Dim se100 As SERVER_INFO_100
Dim success As Long
Dim nStructSize As Long
Dim cnt As Long
Dim resultat As String

nStructSize = LenB(se100)
'la liste des noms est obtenue avec la fonction NetServerEnum
success = NetServerEnum(0&, _
100, _
bufptr, _
MAX_PREFERRED_LENGTH, _
dwEntriesread, _
dwTotalentries, _
SV_TYPE_ALL, _
0&, _
dwResumehandle)


If success = NERR_SUCCESS And _
success <> ERROR_MORE_DATA Then 'si tout se passe bien

For cnt = 0 To dwEntriesread - 1

CopyMemory se100, ByVal bufptr + (nStructSize * cnt), nStructSize
'on scanne le buffer en memoire et pour chaque entrée, conversion en
String
resultat = resultat & GetPointerToByteStringW(se100.sv100_name) & "|"

Next

End If

'nettoyage du buffer que le système a reservé pour la liste des noms
Call NetApiBufferFree(bufptr)

'on retourne le string contenants les noms separés par des "|"
GetServers = resultat

End Function


Public Function GetPointerToByteStringW(ByVal dwData As Long) As String

'fonction auxilliare qui recoit un pointeur vers une chaine dans un buffer
interne
'Windows et la convertit en String exploitable en VB

Dim tmp() As Byte
Dim tmplen As Long

If dwData <> 0 Then

tmplen = lstrlenW(dwData) * 2

If tmplen <> 0 Then

ReDim tmp(0 To (tmplen - 1)) As Byte
CopyMemory tmp(0), ByVal dwData, tmplen
GetPointerToByteStringW = tmp

End If

End If

End Function

Private Sub Command1_Click()
Dim maliste As String

maliste = GetServers(vbNullString)
End Sub

' ----------------------


Pour obtenir en plus les IP, il suffit d'utiliser
GetHostbyname.
Il y a un exemple complet ici:
http://grafikm.developpez.com/vbreseau/Lecon4/

(j'ai pas testé, mais à vue de nez ça à l'air ok).

Il y a aussi du code ici, de meilleure qualité:
http://vbnet.mvps.org/index.html?code/network/ipaddress.htm

Bref avec tout ça, tu dervais avoir ton bonheur!

Bonne prog,


--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
mailto: remove '_no_spam_' ;
FAQ VB: http://faq.vb.free.fr/




Jean-marc
Le #15350911
Rosalie Mignon wrote:
tout fonctionne effectivement, merci

mais maintenant je voudrais modifier l'adresse IP et ces noms de
machine à distance.
C'est-a dire qu'a partir d'une machine, je puisse modifier
leur IP et nom a distance.



Hmm, je ne sais pas.

Regarde à tout hasard la doc de la commande "netsh" ( à exécuter
dans une fenêtre Dos).

Sinon peut être en script:
http://www.pcreview.co.uk/forums/thread-2181599.php

Voir peut être aussi à poser la question sur un forum
fréquenté par des administrateurs système, ils seront sans
doute de meilleur conseil pour ce genre de trucs.

Si je devais faire ça, je ferais (dans l'ordre):
- Google "change address computers"
- j'irais voir dans MSDN online la partie consacrée à l'administration
réseau
- J'irais faire un tour sur les sites VB suivants:
http://vb.mvps.org/samples/
http://www.mvps.org/emorcillo/en/code/vb6/index.shtml

Si tu trouves un moyen, ce serait vraiment très sympa de nous
en faire part ici :-)

Bonne recherche!

--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
mailto: remove '_no_spam_' ;
FAQ VB: http://faq.vb.free.fr/
Guy DETIENNE
Le #15350801
Salut ;O)



Je te conseille aussi de voir du côté de WMI.



Guy



"Rosalie Mignon" 46b4a0e9$0$12197$
tout fonctionne effectivement, merci

mais maintenant je voudrais modifier l'adresse IP et ces noms de machine à
distance.
C'est-a dire qu'a partir d'une machine, je puisse modifier
leur IP et nom a distance.

merci d'avance.


"Jean-marc" message de news: 46b45dc8$0$14241$
Rosalie Mignon wrote:
Bonjour

novice, je n'arrive pas a recenser les machines presentes sur mon
reseau local(4 pc) pour connaitre leur IP et nom de machine.
Le but etait de modifier ces valeurs avec mon programme installe sur
une des 4 machines.

merci d'avance pour tous vos commentaires et aides



Hello,

pour afficher les noms des machines, c'est tout simple avec
la fonction netServerEnum, de la librairie "netapi32".

J'ai trouvé un bout de code qui liste les noms des machines
du réseau, je le cite ici in extenso.

Source :
http://www.developpez.net/forums/archive/index.php/t-7713.html

' --


Option Explicit



'Definition des constantes
Private Const MAX_PREFERRED_LENGTH As Long = -1
Private Const NERR_SUCCESS As Long = 0&
Private Const ERROR_MORE_DATA As Long = 234&
Private Const SV_TYPE_ALL As Long = &HFFFFFFFF
Private Const SV_PLATFORM_ID_OS2 As Long = 400
Private Const SV_PLATFORM_ID_NT As Long = 500

'Masque pour obtenir la version OS Majeure a partir de la variable
version globale
Private Const MAJOR_VERSION_MASK As Long = &HF

Private Type SERVER_INFO_100
sv100_platform_id As Long
sv100_name As Long
End Type

Private Declare Function NetServerEnum Lib "netapi32" _
(ByVal servername As Long, _
ByVal level As Long, _
buf As Any, _
ByVal prefmaxlen As Long, _
entriesread As Long, _
totalentries As Long, _
ByVal servertype As Long, _
ByVal domain As Long, _
resume_handle As Long) As Long

Private Declare Function NetApiBufferFree Lib "netapi32" _
(ByVal Buffer As Long) As Long

Private Declare Sub CopyMemory Lib "kernel32" _
Alias "RtlMoveMemory" _
(pTo As Any, uFrom As Any, _
ByVal lSize As Long)

Private Declare Function lstrlenW Lib "kernel32" _
(ByVal lpString As Long) As Long

Public Function GetServers(sDomain As String) As String

'liste de tous les serveurs dans un domaine

Dim bufptr As Long
Dim dwEntriesread As Long
Dim dwTotalentries As Long
Dim dwResumehandle As Long
Dim se100 As SERVER_INFO_100
Dim success As Long
Dim nStructSize As Long
Dim cnt As Long
Dim resultat As String

nStructSize = LenB(se100)
'la liste des noms est obtenue avec la fonction NetServerEnum
success = NetServerEnum(0&, _
100, _
bufptr, _
MAX_PREFERRED_LENGTH, _
dwEntriesread, _
dwTotalentries, _
SV_TYPE_ALL, _
0&, _
dwResumehandle)


If success = NERR_SUCCESS And _
success <> ERROR_MORE_DATA Then 'si tout se passe bien

For cnt = 0 To dwEntriesread - 1

CopyMemory se100, ByVal bufptr + (nStructSize * cnt), nStructSize
'on scanne le buffer en memoire et pour chaque entrée, conversion en
String
resultat = resultat & GetPointerToByteStringW(se100.sv100_name) & "|"

Next

End If

'nettoyage du buffer que le système a reservé pour la liste des noms
Call NetApiBufferFree(bufptr)

'on retourne le string contenants les noms separés par des "|"
GetServers = resultat

End Function


Public Function GetPointerToByteStringW(ByVal dwData As Long) As String

'fonction auxilliare qui recoit un pointeur vers une chaine dans un
buffer interne
'Windows et la convertit en String exploitable en VB

Dim tmp() As Byte
Dim tmplen As Long

If dwData <> 0 Then

tmplen = lstrlenW(dwData) * 2

If tmplen <> 0 Then

ReDim tmp(0 To (tmplen - 1)) As Byte
CopyMemory tmp(0), ByVal dwData, tmplen
GetPointerToByteStringW = tmp

End If

End If

End Function

Private Sub Command1_Click()
Dim maliste As String

maliste = GetServers(vbNullString)
End Sub

' ----------------------


Pour obtenir en plus les IP, il suffit d'utiliser
GetHostbyname.
Il y a un exemple complet ici:
http://grafikm.developpez.com/vbreseau/Lecon4/

(j'ai pas testé, mais à vue de nez ça à l'air ok).

Il y a aussi du code ici, de meilleure qualité:
http://vbnet.mvps.org/index.html?code/network/ipaddress.htm

Bref avec tout ça, tu dervais avoir ton bonheur!

Bonne prog,


--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
mailto: remove '_no_spam_' ;
FAQ VB: http://faq.vb.free.fr/








Publicité
Poster une réponse
Anonyme