Y a-t-il une méthode simple pour savoir si un chemin vers un répertoire est un chemin local ou bien pointe vers un lecteur réseau ?
Version imprimable
Y a-t-il une méthode simple pour savoir si un chemin vers un répertoire est un chemin local ou bien pointe vers un lecteur réseau ?
Et bien il y a ce code :
Code:
1
2
3
4
5
6
7
8 private bool IsNetworkDirectory(string pPath) { DriveInfo tmpDI = new DriveInfo(pPath.Substring(0, pPath.IndexOf('\\')); if (tmpDI.DriveType == DriveType.Network) return true; return false; }
je confirme : http://msdn2.microsoft.com/fr-fr/lib...fo(VS.80).aspx
Citation:
Utilisez cette classe pour obtenir des informations sur des lecteurs. Le nom du lecteur doit être une lettre majuscule ou minuscule comprise entre 'a' et 'z'. Vous ne pouvez pas utiliser cette méthode pour obtenir des informations sur les noms de lecteurs qui sont référence Null (Nothing en Visual Basic) ou qui utilisent des chemins d'accès UNC (\\serveur\partage).
Oui, mais ca ne répond pas totalement à la question.
Si j'ai bien compris, il voudrait pouvoir tester un path de type //host/shareName et voir si il est local ou pas, sans qu'il soit obligatoirement mappé sur un drive.
oui mais je n'ai pas dit que je répondais à la question, j'ai juste confirmais que la première réponse était incomplète par rapport à la précision sur le besoin exprimé.
Je ne peux pas dire plus car je n'ai pas la réponse, il faudrait que je cherche sur le net mais je n'ai pas le temps pour cela.
j'encourage l'auteur à faire une recherche pour cela d'ailleurs.
Biensur si on complexifie la chose. Alors une méthode simple pour savoir si c'est du local ou du distant c'est de récupéré l'adresse ip du server et la comparer avec localhost ou 127.0.0.1 ou l'adresse ip du PC locale (si je compare les IP plutot que les nom de domaine c'est pour les machines n'en ayant pas)
exemple:
Désoler pour toi mais cela risque de ne pas être très simple et assez long (faut vérifier que le nom serveur obtenu n'est pas une adresse IP, ...) mais au moins tu sera fixer. De plus ce code doit s'ajouter au précédent en testant le début du path si ca commence par // alors faire le code ci dessus sinon faire le premier.Code:
1
2
3
4
5
6
7
8
9
10 // le chemin à vérifier est //unServer/unePage.txt stocké dans la variable path string tmpServerName = path.Substring(2, path.Length - 2); // Ici, on obtient le nom de la machine tmpServerName = tmpServerName.Substring(0, tmpServerName.IndexOf('/')); // Là on récupère son adresse IP System.Net.IPAddress tmpAddress = System.Net.Dns.GetHostAddresses(tmpServerName)[0]; // Là l'adresse IP du PC local System.Net.GetHostName(); // etc etc..