2011-01-20 4 views
5

Selon ce link, NetBIOS n'est plus pris en charge à partir de Windwos Vista. Effectivement, je ne peux plus voir aucun nom NetBIOS des propriétés du réseau.Résoudre le nom NetBIOS sous Windows 7

Cependant, lorsque j'écris des codes sur mon Windows 7, je rencontre toujours des noms NetBIOS dans de nombreux endroits. Par exemple

  1. Je peux toujours utiliser "MYDOMAIN \ Harvey" pour ouvrir une session sur mon ordinateur, où MYDOMAIN est un nom NetBIOS.
  2. Les variables d'environnement COMPUTERNAME et USERDOMAIN sont toujours des noms NetBIOS. Je m'attends à voir un nom DNS ici
  3. Mes noms d'instance SQL Server provenant de mon SQL Server Management Studio est toujours quelque chose comme MYMACHINE \ Instance1.

Je suppose que Microsoft conserve certains de ses éléments pour des raisons de compatibilité ascendante. Je veux comprendre comment Windows 7 va résoudre le nom NetBIOS à une adresse IP. J'ai trouvé cet article expliquant comment fonctionne le NetBIOS name resolution mais je crains que ce ne soit plus vrai dans Windows 7. Au moins, il n'y a pas de serveur WINS pour moi.

Ma dernière question est de savoir comment faire la résolution de noms NetBIOS par programmation, de préférence en C#. Je suis d'accord pour utiliser PInvoke.

UDAPTE

Tridus avait raison. Je peux utiliser System.Net.Dns.GetHostAddresses ("hostname") pour résoudre le nom NetBIOS. J'ai utilisé un réflecteur pour voir ce qui se passe sous le capot. Il appelle gethostbyname() from ws2_32.dll

Here, il explique le gethostbyname() fera la résolution de noms NetBIOS.

  1. Vérifiez le nom d'hôte local pour un nom correspondant.
  2. Vérifiez le fichier Hosts pour une entrée de nom correspondante.
  3. Si un serveur DNS est configuré, interrogez-le.
  4. Si aucune correspondance n'est trouvée, essayez la résolution de noms NetBIOS.

A propos du mystère de NetBIOS non pris en charge dans ce link, je pense que cela signifie que l'API ne sont pas pris en charge. People in ServerFault pense que NetBIOS est toujours pris en charge dans Windows 7.

+0

Je suppose que vous pouvez obtenir plus de traction sur ceci s'il était sur ServerFault. – bryanbcook

+0

@bryanbcook Compte tenu de la dernière ligne, je soupçonne que ce pourrait ne pas être le cas. :-) –

+0

@Harvey Kwok - Donc, votre objectif est de déterminer l'adresse IP d'un ordinateur sur le réseau local en fonction de son nom d'ordinateur? – Justin

Répondre

4

NetBIOS en tant que l'ancien protocole n'est peut-être pas pris en charge, mais SMB/CIFS l'est toujours et c'est pourquoi \ hostname pour le partage de fichiers fonctionne toujours.

Quant à la façon de résoudre un nom, j'ai pu le faire:

System.Net.Dns.GetHostAddresses (« nom d'hôte »)

Je suis sur un domaine il peut être tout simplement ajouter un suffixe DNS et faire une recherche DNS, mais cela a fonctionné pour moi. Essaie. :)

+0

Merci pour l'indice :) –

Questions connexes