greatbarrier86 said:
How does one go about mapping a network drive in C#. i know you use
MapNetworkDrive in scripting languages, but i'm not sure how to do it in C#.
It doesnt seem like C$ would use MapNetworkDrive.
You can use Win32 API:
using System;
using System.Runtime.InteropServices;
namespace E
{
public class Program
{
public enum ResourceScope
{
RESOURCE_CONNECTED = 1,
RESOURCE_GLOBALNET,
RESOURCE_REMEMBERED,
RESOURCE_RECENT,
RESOURCE_CONTEXT
};
public enum ResourceType
{
RESOURCETYPE_ANY,
RESOURCETYPE_DISK,
RESOURCETYPE_PRINT,
RESOURCETYPE_RESERVED
};
public enum ResourceUsage
{
RESOURCEUSAGE_CONNECTABLE = 0x00000001,
RESOURCEUSAGE_CONTAINER = 0x00000002,
RESOURCEUSAGE_NOLOCALDEVICE = 0x00000004,
RESOURCEUSAGE_SIBLING = 0x00000008,
RESOURCEUSAGE_ATTACHED = 0x00000010
};
public enum ResourceDisplayType
{
RESOURCEDISPLAYTYPE_GENERIC,
RESOURCEDISPLAYTYPE_DOMAIN,
RESOURCEDISPLAYTYPE_SERVER,
RESOURCEDISPLAYTYPE_SHARE,
RESOURCEDISPLAYTYPE_FILE,
RESOURCEDISPLAYTYPE_GROUP,
RESOURCEDISPLAYTYPE_NETWORK,
RESOURCEDISPLAYTYPE_ROOT,
RESOURCEDISPLAYTYPE_SHAREADMIN,
RESOURCEDISPLAYTYPE_DIRECTORY,
RESOURCEDISPLAYTYPE_TREE,
RESOURCEDISPLAYTYPE_NDSCONTAINER
};
[StructLayout(LayoutKind.Sequential)]
public struct NETRESOURCE
{
public ResourceScope dwScope;
public ResourceType dwType;
public ResourceDisplayType dwDisplayType;
public ResourceUsage dwUsage;
public string lpLocalName;
public string lpRemoteName;
public string lpComment;
public string lpProvider;
};
[DllImport("mpr.dll")]
public static extern int WNetAddConnection2(ref NETRESOURCE
netResource, string password, string username, int flags);
public static void Main(string[] args)
{
NETRESOURCE res = new NETRESOURCE();
res.dwType = ResourceType.RESOURCETYPE_DISK;
res.lpLocalName = "Z:";
res.lpRemoteName = @"\\ARNE\PCBKUP";
int stat = WNetAddConnection2(ref res, null, null, 0);
Console.WriteLine(stat);
Console.ReadKey();
}
}
}
or you can actually use MapNetworkDive (.NET works with COM):
using System;
using IWshRuntimeLibrary;
namespace E
{
public class Program
{
public static void Main(string[] args)
{
IWshNetwork wshn = new WshNetworkClass();
object missing = Type.Missing;
wshn.MapNetworkDrive(@"Z:", @"\\ARNE\PCBKUP", ref missing, ref
missing, ref missing);
Console.ReadKey();
}
}
}
or you can find some existing code:
http://www.codeproject.com/KB/system/mapnetdrive.aspx
Arne