2010-08-20 7 views
1

J'ai une liste de chemins possibles à utiliser pour un répertoire de données d'entrée par défaut (X: \ Data; Y: \ Data; Z: \ Data). Tous les chemins possibles sont des lecteurs réseau mappés. Je peux vérifier cela en utilisant GetDriveType(pathStr) == DRIVE_REMOTE. Pour déterminer le meilleur, j'ai réduit la liste en sélectionnant uniquement les chemins qui existent. Parfois, il reste plus d'un chemin dans la liste, donc pour déterminer le meilleur à ce stade, je veux trouver l'adresse IP du serveur auquel le disque est mappé, donc je peux le comparer à ma propre adresse IP . Par exemple, si j'ai X:\ mappé à \\RemoteComputer\ShareName, comment puis-je savoir à partir de la chaîne X:\Data le nom ou l'adresse IP de RemoteComputer? (J'ai déjà la possibilité de trouver l'adresse IP à partir d'un nom d'ordinateur).Comment puis-je trouver l'adresse IP d'un lecteur réseau mappé en C++?

Répondre

3

WNetGetUniversalName est une possibilité.

+0

Merci! C'est juste ce dont j'avais besoin. Pour tous ceux qui trouvaient cette réponse, le seul problème que j'avais était qu'il n'accepte que les chemins avec des barres obliques inverses (pas de barres obliques), et le message d'erreur était 87 (recherchez dans les codes d'erreur: ERROR_INVALID_PARAMETER). Il ne vous dit pas quel paramètre est invalide, et il ne dit pas ce qui n'allait pas avec le paramètre, mais la modification des antislashs le corrige. – Ben

0

Gardez à l'esprit, que pas tous (mais la grande majorité) des chemins UNC commencent par un nom d'ordinateur. Certains comme WebDav, sont un FQDN - d'autres comme TS Remoting (c'est-à-dire \ tsclient \ c) ne sont pas du tout une machine, juste un jeton reconnu par RDBSS.

Questions connexes