Bekommen UNC-Pfad von einem lokalen Pfad oder ein zugeordnetes Weg
In Delphi gibt es eine Funktion ExpandUNCFileName, nimmt Sie einen Namen ein und wandelt Sie in die entsprechenden UNC. Es erweitert zugeordnete Laufwerke und überspringt die lokale und bereits erweitert Standorten.
Proben
C:\Folder\Text.txt -> C:\Folder\Text.txt
L:\Folder\Sample.txt -> \\server\Folder1\Folder\Sample.txt Wo L: gemappt ist auf " \\server\Ordner1\
\\server\Ordner\Sample.odf -> \server\Ordner\Sample.odf
Gibt es eine einfache Möglichkeit in C# oder muss ich windows-api-Aufruf WNetGetConnection und dann manuell überprüfen Sie die diejenigen, die nicht abgebildet?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es gibt keine eingebaute Funktion in der BCL, die wird das gleiche. Ich denke, die beste option, die Sie haben pInvoking in WNetGetConnection, wie Sie vorgeschlagen.
P/Invoke
WNetGetUniversalName()
.Ich habe es getan, geändert dieser code aus http://www.pinvoke.net.
Hier einige C# - code mit einem wrapper-Funktion LocalToUNC, das scheint zu funktionieren OK, aber ich habe es noch nicht getestet ausgiebig.
Marshal.ReadIntPtr(lpBuff)
um den string-Puffer. Das ist sauberer als das top-Beispiel auf pinvoke.net,, wo Sie einige shifty Zeiger-Arithmetik, weil Sie die undokumentierte Annahme, dass die string-Puffer befindet sich direkt hinter derUNIVERSAL_NAME_INFO
struct.Versuchen, diesen code, geschrieben in Delphi .Net
müssen Sie es übersetzen zu c #
Bye.