Reputation: 12745
How can I map a network drive using C#. I don't want to use net use
or any third party API.
Heard about UNC paths in C# code but not quite sure how to go about it.
Upvotes: 9
Views: 17865
Reputation: 842
More straight-forward solution is to use 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;
}
}
Once you have the above, use below create/delete mapped drive as necessary.
Converter.RunProcess("net.exe", @"use Q: \\server\share", null);
Converter.RunProcess("net.exe", "use Q: /delete", null);
Upvotes: 0
Reputation: 13780
Use the WnetAddConnection
functions available in the native mpr.dll
.
You will have to write the P/Invoke signatures and structures to call through to the unmanaged function. You can find resources on P/Invoke on pinvoke.net.
This is the signature for WNetAddConnection2
on pinvoke.net:
[DllImport("mpr.dll")]
public static extern int WNetAddConnection2(
ref NETRESOURCE netResource,
string password,
string username,
int flags);
Upvotes: 9
Reputation: 1613
There is no standard feature in .net to map networkdrives but you can find a good wrapper here if you dont want to execute the Native calls by yourself: http://www.codeguru.com/csharp/csharp/cs_network/windowsservices/article.php/c12357
Upvotes: 0
Reputation: 25008
Take a look @ the NetShareAdd Windows' API. You'll need to use PInvoke to get your hands on it, of course.
Upvotes: 0