/// <summary> /// Disconnects the remote. /// </summary> /// <param name="remoteUNC">The remote UNC path.</param> /// <returns>NetworkResource result.</returns> public static NetworkResourceResult DisconnectRemote(string remoteUNC) { NetworkResourceResult result = new NetworkResourceResult(); int ret = -1; try { ret = NativeMethods.WNetCancelConnection2(remoteUNC, NativeMethods.CONNECT_UPDATE_PROFILE, false); if (ret == NativeMethods.NO_ERROR) { result.Succeeded = true; } else { result.Succeeded = false; result.Message = NativeMethods.GetErrorString(ret); } } catch (Exception e) { result.Succeeded = false; result.Message = e.ToString(); } result.ErrorCode = ret; return(result); }
/// <summary> /// Connects to the remote UNC. /// </summary> /// <param name="remoteUNC">The remote UNC path.</param> /// <param name="username">The username.</param> /// <param name="password">The password.</param> /// <param name="promptUser">true to prompt user; otherwise, false.</param> /// <returns>NetworkResource result.</returns> public static NetworkResourceResult ConnectRemote(string remoteUNC, string username, string password, bool promptUser) { NetworkResourceResult result = new NetworkResourceResult(); int ret = -1; try { NETRESOURCE netResource = new NETRESOURCE { dwType = NativeMethods.RESOURCETYPE_DISK, lpRemoteName = remoteUNC }; if (promptUser) { ret = NativeMethods.WNetUseConnection(IntPtr.Zero, netResource, string.Empty, string.Empty, NativeMethods.CONNECT_INTERACTIVE | NativeMethods.CONNECT_PROMPT, null, null, null); } else { ret = NativeMethods.WNetUseConnection(IntPtr.Zero, netResource, password, username, 0, null, null, null); } if (ret == NativeMethods.NO_ERROR) { result.Succeeded = true; } else { result.Succeeded = false; result.Message = NativeMethods.GetErrorString(ret); } } catch (Exception e) { result.Succeeded = false; result.Message = e.ToString(); } result.ErrorCode = ret; return(result); }