2011-01-20 16 views
5

In base a questo link, NetBIOS non è più supportato a partire da Windwos Vista. Abbastanza sicuro, non riesco più a vedere alcun nome NetBIOS dalle proprietà di rete.Risolvi il nome NetBIOS su Windows 7

Tuttavia, quando sto scrivendo i codici sul mio Windows 7, continuo a incontrare i nomi NetBIOS in molti posti. Ad esempio

  1. Posso ancora utilizzare "MYDOMAIN \ Harvey" per accedere al mio computer, dove credo che MYDOMAIN sia un nome NetBIOS.
  2. Le variabili di ambiente COMPUTERNAME e USERDOMAIN sono ancora nomi NetBIOS. Mi aspetto di vedere qui i nomi DNS
  3. I nomi delle istanze di SQL Server provenienti da SQL Server Management Studio sono ancora simili a MYMACHINE \ Instance1.

Immagino che Microsoft mantenga ancora alcune parti per compatibilità con le versioni precedenti. Voglio capire in che modo Windows 7 risolverà il nome NetBIOS in un indirizzo IP. Ho trovato questo articolo che spiega come funziona il NetBIOS name resolution ma temo che questo non sia più vero in Windows 7. Almeno per me non esiste un server WINS.

La mia ultima domanda è come faccio a programmare la risoluzione del nome NetBIOS, preferibilmente in C#. Sto bene per usare PInvoke.

UDAPTE

Tridus era giusto. Posso usare System.Net.Dns.GetHostAddresses ("hostname") per risolvere il nome NetBIOS. Ho usato il riflettore per vedere cosa sta succedendo sotto il cofano. Si chiama gethostbyname() from ws2_32.dll

Here, spiega gethostbyname() eseguirà la risoluzione dei nomi NetBIOS.

  1. Controllare il nome host locale per un nome corrispondente.
  2. Controllare il file host per una voce di nome corrispondente.
  3. Se è configurato un server DNS, interrogarlo.
  4. Se non viene trovata alcuna corrispondenza, tentare la risoluzione del nome NetBIOS.

Circa il mistero di NetBIOS non supportati in questo link, penso che significa solo l'API non è supportata. People in ServerFault pensa che NetBIOS sia ancora supportato in Windows 7.

+0

Ho il sospetto che si possa ottenere più trazione su questo se fosse su ServerFault. – bryanbcook

+0

@bryanbcook Tenendo presente l'ultima riga, ho il sospetto che potrebbe non essere il caso. :-) –

+0

@Harvey Kwok - Quindi il tuo obiettivo è determinare l'indirizzo IP di un computer sulla rete locale in base al nome del computer? – Justin

risposta

4

Lo stesso NetBIOS come il vecchio protocollo potrebbe non essere supportato, ma SMB/CIFS lo è ancora ed è per questo che \ hostname per filesharing e simili funzionano ancora.

Quanto a come risolvere un nome, sono stato in grado di fare questo:

System.Net.Dns.GetHostAddresses ("hostname")

Sono su un dominio, quindi potrebbe essere semplicemente aggiungendo un suffisso DNS e facendo una ricerca DNS, ma ha funzionato per me. Provaci. :)

+0

Grazie per il suggerimento :) –