Obtenir le chemin UNC d'un chemin d'accès local ou mappé chemin
En Delphi il y a une fonction ExpandUNCFileName qui prend un nom de fichier et le convertit en l'UNC équivalent. Il développe des lecteurs mappés et saute locale et déjà élargi endroits.
Échantillons
C:\Folder\Text.txt -> C:\Folder\Text.txt
L:\Folder\Sample.txt -> \\server\Folder1\Folder\Sample.txt Où L: est mappé sur \\serveur\Dossier1\
\\serveur\Dossier\Échantillon.odf -> \serveur\Dossier\Échantillon.odf
Est-il une façon simple de le faire en C# ou devrai-je utiliser l'api windows WNetGetConnection manuellement, puis cochez celles qui n'obtiennent pas mappé?
OriginalL'auteur Chris J | 2009-09-11
Vous devez vous connecter pour publier un commentaire.
Il n'y a pas de fonction intégrée dans la BCL qui va faire l'équivalent. Je pense que la meilleure option que vous avez est pInvoking en WNetGetConnection comme vous l'avez suggéré.
OriginalL'auteur JaredPar
P/Invoke
WNetGetUniversalName()
.J'ai fait la modification ce code de http://www.pinvoke.net.
OriginalL'auteur Jay Riggs
Voici un code C# avec une fonction wrapper LocalToUNC, qui semble fonctionner OK, si je n'ai pas testé beaucoup.
Marshal.ReadIntPtr(lpBuff)
pour obtenir le tampon de chaîne. C'est plus propre que le haut exemple sur pinvoke.net, où ils font des sournois de l'arithmétique des pointeurs, car ils font les sans-papiers hypothèse que la mémoire tampon de chaîne est situé directement derrière leUNIVERSAL_NAME_INFO
struct.OriginalL'auteur Jack Culhane
Essayer ce code est écrit en Delphi .Net
vous devez le traduire en c #
Bye.
OriginalL'auteur RRUZ