C# 如何获取映射网络驱动器的共享路径
1. 映射一个网络驱动器:

2. 完成映射后将在资源管理器中看到新增的盘符 Z

3. 使用下面的代码我们能很容易的获取到本地映射网络驱动器的网络路径。
- using System;
- using System.Collections.Generic;
- using System.Text;
- using System.Runtime.InteropServices;
- using System.IO;
- using System.Xml;
- namespace PathingDemos
- {
- class Program
- {
- static void Main(string[] args)
- {
- string path = Pathing.GetUNCPath(@"Z:/"); // path = @"//192.168.1.2/共享"
- }
- }
- public static class Pathing
- {
- [DllImport("mpr.dll", CharSet = CharSet.Unicode, SetLastError = true)]
- public static extern int WNetGetConnection(
- [MarshalAs(UnmanagedType.LPTStr)] string localName,
- [MarshalAs(UnmanagedType.LPTStr)] StringBuilder remoteName,
- ref int length);
- /// <summary>
- /// 给定一个路径,返回的网络路径或原始路径。
- /// 例如:给定路径 P:/2008年2月29日(P:为映射的网络驱动器名),可能会返回:“//networkserver/照片/2008年2月9日”
- /// </summary>
- /// <param name="originalPath">指定的路径</param>
- /// <returns>如果是本地路径,返回值与传入参数值一样;如果是本地映射的网络驱动器</returns>
- public static string GetUNCPath(string originalPath)
- {
- StringBuilder sb = new StringBuilder(512<mce:script type="text/javascript" src="http://hi.images.csdn.net/js/blog/tiny_mce/themes/advanced/langs/zh.js" mce_src="http://hi.images.csdn.net/js/blog/tiny_mce/themes/advanced/langs/zh.js"></mce:script><mce:script type="text/javascript" src="http://hi.images.csdn.net/js/blog/tiny_mce/plugins/syntaxhl/langs/zh.js" mce_src="http://hi.images.csdn.net/js/blog/tiny_mce/plugins/syntaxhl/langs/zh.js"></mce:script>);
- int size = sb.Capacity;
- if (originalPath.Length > 2 && originalPath[1] == ':')
- {
- char c = originalPath[0];
- if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z'))
- {
- int error = WNetGetConnection(originalPath.Substring(0, 2),
- sb, ref size);
- if (error == 0)
- {
- DirectoryInfo dir = new DirectoryInfo(originalPath);
- string path = Path.GetFullPath(originalPath)
- .Substring(Path.GetPathRoot(originalPath).Length);
- return Path.Combine(sb.ToString().TrimEnd(), path);
- }
- }
- }
- return originalPath;
- }
- }
- }
浙公网安备 33010602011771号