1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
|
#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
|