Newsgroup: it.comp.lang.visual-basic
Titolo: Computer su una Lan

Sono alla ricerca di un sistema (ocx o API) per elencare i nomi dei computer
presenti su una LAN.
Cerco, in sintesi, qualcosa tipo Risorse di Rete che mi consenta di
esplorare tutti i PC in rete ed avere i loro nomi.
Grazie per l'aiuto.
David

 esplorare tutti i PC in rete ed avere i loro nomi.
Occorre utilizzare la funzione NetServerEnum
Declare Function NetServerEnum Lib "netapi32.dll" _
    (ByVal servername As String, ByVal level As Long, _
    ByRef bufptr As String, ByVal prefmaxlen As Long, _
    ByVal entriesread As Long, ByVal totalentries As Long, _
    ByVal servertype As Long, ByVal domain As String, _
    ByVal resume_handle As Long) As Long
alla quale va passato il riferimento ad una struttura
SERVER_INFO_101 o SERVER_INFO_100
(meglio la prima) usando il parametro "level" impostato
a 100 o 101.
Type SERVER_INFO_101
    sv101_platform_id As Long
    sv101_name As String
    sv101_version_major As Long
    sv101_version_minor As Long
    sv101_type As Long
    sv101_comment As String
End Type
In "bufptr" avrai il puntatore al buffer dove la funzione
inserisce i dati richiesti, in "entriesread" il numero di
strutture (dimensione dell'array) corrispondente al numero
di macchine del tipo richiesto che sono state trovate.
In "totalentries" il numero workstation e server visibili.
Il tipo di macchina ("servertype") può essere:
SV_TYPE_WORKSTATION = &H00000001  'All LAN Manager workstations
SV_TYPE_SERVER = &00000002  'All LAN Manager servers
SV_TYPE_SQLSERVER  = &00000004 'Any server running with Microsoft SQL Server
SV_TYPE_DOMAIN_CTRL  = &00000008 'Primary domain controller
SV_TYPE_DOMAIN_BAKCTRL  = &00000010 'Backup domain controller
SV_TYPE_TIMESOURCE  = &00000020 'Server running the Timesource service
SV_TYPE_AFP  = &00000040 'Apple File Protocol servers
SV_TYPE_NOVELL  = &00000080 'Novell servers
SV_TYPE_DOMAIN_MEMBER  = &00000100 'LAN Manager 2.x Domain Member
SV_TYPE_LOCAL_LIST_ONLY  = &40000000 'Servers maintained by the browser. See the following Remarks section.
SV_TYPE_PRINT  = &00000200 'Server sharing print queue
SV_TYPE_DIALIN  = &00000400 'Server running dial-in service
SV_TYPE_XENIX_SERVER  = &00000800 'Xenix server
SV_TYPE_MFPN  = &00004000 'Microsoft File and Print for Netware
SV_TYPE_NT  = &00001000 'Windows NT (either Workstation or Server)
SV_TYPE_WFW  = &00002000 'Server running Windows for Workgroups
SV_TYPE_SERVER_NT  = &00008000 'Windows NT Non-DC server
SV_TYPE_POTENTIAL_BROWSER  = &00010000 'Server that can run the Browser service
SV_TYPE_BACKUP_BROWSER   = &00020000 'Server running a Browser service as backup
SV_TYPE_MASTER_BROWSER  = &00040000 'Server running the master Browser service
SV_TYPE_DOMAIN_MASTER  = &00080000 'Server running the domain master Browser
SV_TYPE_DOMAIN_ENUM  = &80000000 'Primary Domain
SV_TYPE_WINDOWS  = &00400000 'Windows 95 or later
SV_TYPE_ALL  = &FFFFFFFF 'All servers
o una combinazione di questi valori.
Il parametro "domain" è una stringa Unicode con il nome
del dominio. La funzione ritorna:
ERROR_ACCESS_DENIED 'Manca il privilegio di accesso al'informazione.
NERR_InvalidComputer 'Nome del computer non valido
ERROR_NO_BROWSER_SERVERS_FOUND 'browser servers non trovato
ERROR_MORE_DATA  'Famigerato. Esistono altre informazioni da richiedere
con ulteriori chiamate.
La struttura viene popolata in modo relativamente "tricky".
In VB occorre utilizzare l'API RtlMoveMemory per copiare
le informazioni qui contenute in una struttura leggibile da VB.
In uscita, usare sempre NetApiBufferFree per ripulire
la memoria, pena casini inenarrabili (a volte).
Se non ti ci raccapezzi, posso provare a fare un esempio.

Se non ti spiace mi interesserebbe molto avere un esempio
grazie


 grazie
approvo cordialmente :)

> > Se non ti spiace mi interesserebbe molto avere un esempio
OK. Appena ho un momento.