如何使用C#映射驱动器?

如何使用C#映射网络驱动器。 我不想使用net use或任何第三方API。

听说过C#代码中的UNC路径,但不太清楚如何去做。

使用本机WnetAddConnection提供的WnetAddConnection函数。

您必须编写P / Invoke签名和结构以调用非托管函数。 您可以在pinvoke.net上找到P / Invoke上的资源 。

这是WNetAddConnection2上WNetAddConnection2的签名 :

 [DllImport("mpr.dll")] public static extern int WNetAddConnection2( ref NETRESOURCE netResource, string password, string username, int flags); 

更直接的解决方案是使用Process.Start()

 internal static int RunProcess(string fileName, string args, string workingDir) { var startInfo = new ProcessStartInfo { FileName = fileName, Arguments = args, UseShellExecute = false, RedirectStandardError = true, RedirectStandardOutput = true, CreateNoWindow = true, WorkingDirectory = workingDir }; using (var process = Process.Start(startInfo)) { if (process == null) { throw new Exception($"Failed to start {startInfo.FileName}"); } process.OutputDataReceived += (s, e) => e.Data.Log(); process.ErrorDataReceived += (s, e) => { if (!string.IsNullOrWhiteSpace(e.Data)) { new Exception(e.Data).Log(); } }; process.BeginOutputReadLine(); process.BeginErrorReadLine(); process.WaitForExit(); return process.ExitCode; } } 

完成上述操作后,根据需要使用下面的create / delete映射驱动器。

 Converter.RunProcess("net.exe", @"use Q: \\server\share", null); Converter.RunProcess("net.exe", "use Q: /delete", null); 

看看@ NetShareAdd Windows的API。 当然,你需要使用PInvoke来掌握它。

.net中没有标准function来映射网络驱动器,但是如果你不想自己执行Native调用,你可以在这里找到一个好的包装器: http : //www.codeguru.com/csharp/csharp/cs_network/windowsservices/article .PHP / c12357