Scansionare rete lan con dominio

venerdì 23 agosto 2013 - 08.27
Tag Elenco Tags  VB.NET  |  .NET 4.0  |  Visual Studio 2010

Mau67 Profilo | Expert

Buongiorno forum,
ho la seguente funzione:
Function ElencoPC(ByVal dominio As String) As String()
Dim dirs, dir As DirectoryEntry
Dim Buffer(-1) As String
Dim risp As New StringCollection

dirs = New DirectoryEntry("WinNT://" & dominio)
For Each dir In dirs.Children
If dir.SchemaClassName = "Computer" Then
risp.Add(dir.Name)
End If
Next

If risp.Count > 0 Then
ReDim Buffer(risp.Count - 1)
risp.CopyTo(Buffer, 0)
End If
Return Buffer
End Function

questa funzione mi restituisce il nome dei pc della mia rete sotto dominio, vorrei anche visualizzare gli indirizzi ip associati al nome del pc
potreste darmi una mano?
Grazie infinite
Mau67

Vash Profilo | Junior Member

Buongiorno,
avendo il nome dell'host puoi fare così:
try { IPHostEntry ipEntry = Dns.GetHostByName("NomeHost"); IPAddress[] addr = ipEntry.AddressList; for (int i = 0; i < addr.Length; i++) { MessageBox.Show(String.Format("Indirizzo IP {0}: {1} ", i, addr[i].ToString())); } } catch (Exception ex) { // Host sconosciuto. MessageBox.Show(ex.Message); }

Buongiorno

Mau67 Profilo | Expert

Ciao grazie per la risposta, ma quando lancio l'applicazione mi dice nome host corretto e non mi visualizza nessun nome macchina ne tantomeno ip

Mau67

Vash Profilo | Junior Member

Ciao,
Ho provato in terminal server e mi funziona!
Hai provato a mettere il nome della tua macchina? Giusto per capire se almeno così ti funziona! Ti dovrebbe restituire tutti gli indirizzi IP presenti nella tua macchina.

ciao

Mau67 Profilo | Expert

io lancio l'applicazione da qualsiasi pc e voglio la restituzione delle macchine e relativo ip legato al dominio

Mau67

Vash Profilo | Junior Member

Non ci siamo capiti:
il codice che ti ho postato restituisce l'indirizzo IP di un computer, ma tu gli devi passare il nome del pc. Pensavo che con le tue istruzioni avessi già il nome del pc!

Mau67 Profilo | Expert

no se leggi il codice che ho scritto io vedi che già legge nel dominio il nome dei pc, io voglio che mi tiri fuori anche gli indirizzi ip legati al nome ella macchina

Mau67

Vash Profilo | Junior Member

Ok perfetto allora!
il tuo codice va bene così, ottenuto l'elenco dei nomi pc utilizzi il mio codice all'interno di un ciclo For dove gli passi il nomehost

Mau67 Profilo | Expert

lo fatto ma mi rstituisce il messaggio che ti ho detto prima

Mau67

Vash Profilo | Junior Member

ciao,
ho provato a fare un test; ho preso il tuo codice tale quale e in più ci ho aggiunto il mio.
La tua funzione:
Function ElencoPC(ByVal dominio As String) As String() Dim dirs, dir As DirectoryEntry Dim Buffer(-1) As String Dim risp As New StringCollection Try dirs = New DirectoryEntry("WinNT://" & dominio) For Each dir In dirs.Children If dir.SchemaClassName = "Computer" Then risp.Add(dir.Name) End If Next If risp.Count > 0 Then ReDim Buffer(risp.Count - 1) risp.CopyTo(Buffer, 0) End If Catch ex As Exception MsgBox(ex.Message) End Try Return Buffer End Function

il mio pezzo al Button_Click():
Private Sub Button_Click(sender As Object, e As RoutedEventArgs) For Each pc As String In ElencoPC(txtDominio.Text) Dim ip As String = "" Try Dim ipEntry As IPHostEntry = Dns.GetHostByName(pc) Dim addr As IPAddress() = ipEntry.AddressList For i As Integer = 0 To addr.Count - 1 ip &= vbCrLf & addr(i).ToString() Next Catch ex As Exception End Try MsgBox(pc & " :" & ip) Next End Sub

questo a me funziona all'interno del mio dominio!

ciao

Mau67 Profilo | Expert

Ok lunedì appena vado in ufficio provo e ti faccio sapere Buon fine settimana
Mau67

Mau67 Profilo | Expert

Ok perfetto funziona ciao e grazie
Mau67
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5