Feedback

C# - UNC-Pfad ermitteln

Veröffentlicht von am 8/26/2009
(1 Bewertungen)
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
Abgelegt unter UNC, UNC-Pfad, Pfad, ermitteln, erzeugen.

Kommentare zum Snippet

 

Logge dich ein, um hier zu kommentieren!