public enumERROR_ID
{
ERROR_SUCCESS= 0, //Success
ERROR_BUSY = 170,
ERROR_MORE_DATA= 234,
ERROR_NO_BROWSER_SERVERS_FOUND= 6118,
ERROR_INVALID_LEVEL= 124,
ERROR_ACCESS_DENIED= 5,
ERROR_INVALID_PASSWORD= 86,
ERROR_INVALID_PARAMETER= 87,
ERROR_BAD_DEV_TYPE= 66,
ERROR_NOT_ENOUGH_MEMORY= 8,
ERROR_NETWORK_BUSY= 54,
ERROR_BAD_NETPATH= 53,
ERROR_NO_NETWORK= 1222,
ERROR_INVALID_HANDLE_STATE= 1609,
ERROR_EXTENDED_ERROR= 1208,
ERROR_DEVICE_ALREADY_REMEMBERED= 1202,
ERROR_NO_NET_OR_BAD_PATH= 1203}public enumRESOURCE_SCOPE
{
RESOURCE_CONNECTED= 1,
RESOURCE_GLOBALNET= 2,
RESOURCE_REMEMBERED= 3,
RESOURCE_RECENT= 4,
RESOURCE_CONTEXT= 5}public enumRESOURCE_TYPE
{
RESOURCETYPE_ANY= 0,
RESOURCETYPE_DISK= 1,
RESOURCETYPE_PRINT= 2,
RESOURCETYPE_RESERVED= 8,
}public enumRESOURCE_USAGE
{
RESOURCEUSAGE_CONNECTABLE= 1,
RESOURCEUSAGE_CONTAINER= 2,
RESOURCEUSAGE_NOLOCALDEVICE= 4,
RESOURCEUSAGE_SIBLING= 8,
RESOURCEUSAGE_ATTACHED= 16,
RESOURCEUSAGE_ALL= (RESOURCEUSAGE_CONNECTABLE | RESOURCEUSAGE_CONTAINER |RESOURCEUSAGE_ATTACHED),
}public enumRESOURCE_DISPLAYTYPE
{
RESOURCEDISPLAYTYPE_GENERIC= 0,
RESOURCEDISPLAYTYPE_DOMAIN= 1,
RESOURCEDISPLAYTYPE_SERVER= 2,
RESOURCEDISPLAYTYPE_SHARE= 3,
RESOURCEDISPLAYTYPE_FILE= 4,
RESOURCEDISPLAYTYPE_GROUP= 5,
RESOURCEDISPLAYTYPE_NETWORK= 6,
RESOURCEDISPLAYTYPE_ROOT= 7,
RESOURCEDISPLAYTYPE_SHAREADMIN= 8,
RESOURCEDISPLAYTYPE_DIRECTORY= 9,
RESOURCEDISPLAYTYPE_TREE= 10,
RESOURCEDISPLAYTYPE_NDSCONTAINER= 11}
[StructLayout(LayoutKind.Sequential)]public structNETRESOURCE
{publicRESOURCE_SCOPE dwScope;publicRESOURCE_TYPE dwType;publicRESOURCE_DISPLAYTYPE dwDisplayType;publicRESOURCE_USAGE dwUsage;
[MarshalAs(UnmanagedType.LPStr)]public stringlpLocalName;
[MarshalAs(UnmanagedType.LPStr)]public stringlpRemoteName;
[MarshalAs(UnmanagedType.LPStr)]public stringlpComment;
[MarshalAs(UnmanagedType.LPStr)]public stringlpProvider;
}public classNetworkConnection
{
[DllImport("mpr.dll")]public static extern int WNetAddConnection2A(NETRESOURCE[] lpNetResource, string lpPassword, string lpUserName, intdwFlags);
[DllImport("mpr.dll")]public static extern int WNetCancelConnection2A(string sharename, int dwFlags, intfForce);public static int Connect(string remotePath, string localPath, string username, stringpassword)
{
NETRESOURCE[] share_driver= new NETRESOURCE[1];
share_driver[0].dwScope =RESOURCE_SCOPE.RESOURCE_GLOBALNET;
share_driver[0].dwType =RESOURCE_TYPE.RESOURCETYPE_DISK;
share_driver[0].dwDisplayType =RESOURCE_DISPLAYTYPE.RESOURCEDISPLAYTYPE_SHARE;
share_driver[0].dwUsage =RESOURCE_USAGE.RESOURCEUSAGE_CONNECTABLE;
share_driver[0].lpLocalName =localPath;
share_driver[0].lpRemoteName =remotePath;
Disconnect(localPath);int ret = WNetAddConnection2A(share_driver, password, username, 1);returnret;
}public static int Disconnect(stringlocalpath)
{return WNetCancelConnection2A(localpath, 1, 1);
}
}