Expand|Select|Wrap|Line Numbers
- NetworkShare.DisconnectFromShare(@"\\server-a\DBFiles", true); //Disconnect in case we are currently connected with our credentials;
- NetworkShare.ConnectToShare(@"\\server-a\DBFiles", "user1", "password1!"); //Connect with the new credentials
- File.Copy(@"c:\temp\T1.txt", @"\\server-a\DBFiles\T1.txt");
- NetworkShare.DisconnectFromShare(@"\\server-a\DBFiles", false); //Disconnect from the server.
- and then Networkshare static class:
- public static class NetworkShare
- {
- /// <summary>
- /// Connects to the remote share
- /// </summary>
- /// <returns>Null if successful, otherwise error message.</returns>
- public static string ConnectToShare(string uri, string username, string password)
- {
- //Create netresource and point it at the share
- NETRESOURCE nr = new NETRESOURCE();
- nr.dwType = RESOURCETYPE_DISK;
- nr.lpRemoteName = uri;
- //Create the share
- int ret = WNetUseConnection(IntPtr.Zero, nr, password, username, 0, null, null, null);
- //Check for errors
- if (ret == NO_ERROR)
- return null;
- else
- return GetError(ret);
- }
- /// <summary>
- /// Remove the share from cache.
- /// </summary>
- /// <returns>Null if successful, otherwise error message.</returns>
- public static string DisconnectFromShare(string uri, bool force)
- {
- //remove the share
- int ret = WNetCancelConnection(uri, force);
- //Check for errors
- if (ret == NO_ERROR)
- return null;
- else
- return GetError(ret);
- }
- #region P/Invoke Stuff
- [DllImport("Mpr.dll")]
- private static extern int WNetUseConnection(
- IntPtr hwndOwner,
- NETRESOURCE lpNetResource,
- string lpPassword,
- string lpUserID,
- int dwFlags,
- string lpAccessName,
- string lpBufferSize,
- string lpResult
- );
- [DllImport("Mpr.dll")]
- private static extern int WNetCancelConnection(
- string lpName,
- bool fForce
- );
- [StructLayout(LayoutKind.Sequential)]
- private class NETRESOURCE
- {
- public int dwScope = 0;
- public int dwType = 0;
- public int dwDisplayType = 0;
- public int dwUsage = 0;
- public string lpLocalName = "";
- public string lpRemoteName = "";
- public string lpComment = "";
- public string lpProvider = "";
- }
- #region Consts
- const int RESOURCETYPE_DISK = 0x00000001;
- const int CONNECT_UPDATE_PROFILE = 0x00000001;
- #endregion
- #region Errors
- const int NO_ERROR = 0;
- const int ERROR_ACCESS_DENIED = 5;
- const int ERROR_ALREADY_ASSIGNED = 85;
- const int ERROR_BAD_DEVICE = 1200;
- const int ERROR_BAD_NET_NAME = 67;
- const int ERROR_BAD_PROVIDER = 1204;
- const int ERROR_CANCELLED = 1223;
- const int ERROR_EXTENDED_ERROR = 1208;
- const int ERROR_INVALID_ADDRESS = 487;
- const int ERROR_INVALID_PARAMETER = 87;
- const int ERROR_INVALID_PASSWORD = 1216;
- const int ERROR_MORE_DATA = 234;
- const int ERROR_NO_MORE_ITEMS = 259;
- const int ERROR_NO_NET_OR_BAD_PATH = 1203;
- const int ERROR_NO_NETWORK = 1222;
- const int ERROR_SESSION_CREDENTIAL_CONFLICT = 1219;
- const int ERROR_BAD_PROFILE = 1206;
- const int ERROR_CANNOT_OPEN_PROFILE = 1205;
- const int ERROR_DEVICE_IN_USE = 2404;
- const int ERROR_NOT_CONNECTED = 2250;
- const int ERROR_OPEN_FILES = 2401;
- private struct ErrorClass
- {
- public int num;
- public string message;
- public ErrorClass(int num, string message)
- {
- this.num = num;
- this.message = message;
- }
- }
- private static ErrorClass[] ERROR_LIST = new ErrorClass[] {
- new ErrorClass(ERROR_ACCESS_DENIED, "Error: Access Denied"),
- new ErrorClass(ERROR_ALREADY_ASSIGNED, "Error: Already Assigned"),
- new ErrorClass(ERROR_BAD_DEVICE, "Error: Bad Device"),
- new ErrorClass(ERROR_BAD_NET_NAME, "Error: Bad Net Name"),
- new ErrorClass(ERROR_BAD_PROVIDER, "Error: Bad Provider"),
- new ErrorClass(ERROR_CANCELLED, "Error: Cancelled"),
- new ErrorClass(ERROR_EXTENDED_ERROR, "Error: Extended Error"),
- new ErrorClass(ERROR_INVALID_ADDRESS, "Error: Invalid Address"),
- new ErrorClass(ERROR_INVALID_PARAMETER, "Error: Invalid Parameter"),
- new ErrorClass(ERROR_INVALID_PASSWORD, "Error: Invalid Password"),
- new ErrorClass(ERROR_MORE_DATA, "Error: More Data"),
- new ErrorClass(ERROR_NO_MORE_ITEMS, "Error: No More Items"),
- new ErrorClass(ERROR_NO_NET_OR_BAD_PATH, "Error: No Net Or Bad Path"),
- new ErrorClass(ERROR_NO_NETWORK, "Error: No Network"),
- new ErrorClass(ERROR_BAD_PROFILE, "Error: Bad Profile"),
- new ErrorClass(ERROR_CANNOT_OPEN_PROFILE, "Error: Cannot Open Profile"),
- new ErrorClass(ERROR_DEVICE_IN_USE, "Error: Device In Use"),
- new ErrorClass(ERROR_EXTENDED_ERROR, "Error: Extended Error"),
- new ErrorClass(ERROR_NOT_CONNECTED, "Error: Not Connected"),
- new ErrorClass(ERROR_OPEN_FILES, "Error: Open Files"),
- new ErrorClass(ERROR_SESSION_CREDENTIAL_CONFLICT, "Error: Credential Conflict"),
- };
- private static string GetError(int errNum)
- {
- foreach (ErrorClass er in ERROR_LIST)
- {
- if (er.num == errNum)
- return er.message;
- Console.WriteLine(er.num);
- Console.WriteLine(errNum);
- }
- return "Error: Unknown, " + errNum;
- }
- #endregion
- #endregion
- }
- Error I am getting on
- foreach (ErrorClass er in ERROR_LIST)
- {
- if (er.num == errNum)
- return er.message;
- Console.WriteLine(er.num);
- Console.WriteLine(errNum);
- }
5 2250 85 2250 1200 2250 67 2250 1204 2250 1223 2250 1208 2250 487 2250 87 2250 1216 2250 234 2250 259 2250 1203 2250 1222 2250 1206
2250 1205 2250 2404 2250 1208 2250
5 53 85 53 1200 53 67 53 1204 53 1223 53 1208 53 487 53 87 53 1216 53 234 53 259 53 1203 53 1222 53 1206 53 1205 53 2404 53 1208 53
2250 53 2401 53 1219 53
A first chance exception of type 'System.UnauthorizedAccessException' occurred in mscorlib.dll
please help!