Mit diesem Snippet kann man einen UNC-Pfad aus einem Pfad erstellen lassen.
Sollte es nicht möglich sein einen UNC-Pfad zu erstellen wird ein leerer String zurück gegeben.
Um dieses Snippet nutzen zu können sind folgende Verweise einzubinden:
using System.IO;
using System.Runtime.InteropServices;
using System.Security.AccessControl;
using System.Windows.Forms;
Des weiteren muss auch eine *.dll Datei importiert werden. Dies ist im Snippet enthalten.
#region *.dll Import
[DllImport("mpr.dll", SetLastError = false, CharSet = CharSet.Auto)]
private static extern Int32 WNetGetConnection(string localName, StringBuilder
remoteName, ref Int32 remoteSize);
#endregion
#region +string GetPath(string sPath) // Netz- oder Lokaleslaufwerk als UNC bzw. Normal
#region XML-Doku
/// <summary>
/// Prüft ob Pfad Netzlaufwerk ist. Wenn ja, Pfad in UNC-Pfad umwandeln, sonst belassen.
/// </summary>
/// <param name="sPath">
/// benötigter Pfad zur Erstellung
/// </param>
/// <returns>UNC-Pfad</returns>
#endregion
public static string ConvertToUNC(string sPath)
{
if (sPath.Trim().Length == 0)
return "";
string sTmp;
DirectoryInfo di = new DirectoryInfo(sPath);
FileInfo fi = new FileInfo(sPath);
try
{
if ((di.Exists == true) || (fi.Exists == true))
{
new DirectorySecurity(sPath, AccessControlSections.Access);
#region erzeugen des UNC-Pfads mit StringBuilder
StringBuilder sbUNC = new StringBuilder(500);
int length = sbUNC.Capacity;
string LocalLetter = sPath.Substring(0, 2);
WNetGetConnection(LocalLetter, sbUNC, ref length);
#endregion
// UNC-Pfad auf string Variable
sTmp = sbUNC.ToString();
if (sTmp.Length <= 0)
{
return sPath.Trim();
}
else
{
string result = sTmp + sPath.Substring(2);
return result.Trim();
}
}
else
{
MessageBox.Show("Der angegebene Pfad ist nicht existent oder es bestehen keine Zugriffsrechte.",
DateTime.Now.ToString("dd.MM.yyyy HH:mm:ss") + " - Fehler",
MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
catch (Exception)
{ }
return "";
}
#endregion
Kommentare zum Snippet