title: Error connecting to remote share - c#
body: <p>Using .net 4.0 in a console application</p>
  
  <p>I am trying to move files from local computer to a shared drive and this code gives me the error at the using statement.</p>
  
  <p>The credentials are valid. What could be going wrong.</p>
  
  <pre><code>namespace UploadList
  {
      class Program
      {
        static void Main(string[] args)
          {
             MoveFiles();
          }
        public static void MoveFiles()
          {
              try
              {
                  NetworkCredential readCredentials = new 
                  NetworkCredential(@"gktrs\PRDSys", "P@ssw0rd123");
  
                  string filepath = "\\\\10.60.90.1\\D$";
                  //error at the using statement
                  //ERROR : *Error connecting to remote share*
                  using (new NetworkConnection(filepath, readCredentials))
                  {
  
                  }                    
              }
              catch(Exception ex)
              {
  
              }
          }
      }
  }
  public class NetworkConnection : IDisposable
  {
      string _networkName;
  
      public NetworkConnection(string networkName,
          NetworkCredential credentials)
      {
          _networkName = networkName;
  
          var netResource = new NetResource()
          {
              Scope = ResourceScope.GlobalNetwork,
              ResourceType = ResourceType.Disk,
              DisplayType = ResourceDisplaytype.Share,
              RemoteName = networkName
          };
  
          var result = WNetAddConnection2(
              netResource,
              credentials.Password,
              credentials.UserName,
              0);
  
          if (result != 0)
          {
              throw new Win32Exception(result, "Error connecting to remote share");
          }
      }
  
      ~NetworkConnection()
      {
          Dispose(false);
      }
  
      public void Dispose()
      {
          Dispose(true);
          GC.SuppressFinalize(this);
      }
  
      protected virtual void Dispose(bool disposing)
      {
          WNetCancelConnection2(_networkName, 0, true);
      }
  
      [DllImport("mpr.dll")]
      private static extern int WNetAddConnection2(NetResource netResource,
          string password, string username, int flags);
  
      [DllImport("mpr.dll")]
      private static extern int WNetCancelConnection2(string name, int flags,
          bool force);
  }
  
  [StructLayout(LayoutKind.Sequential)]
  public class NetResource
  {
      public ResourceScope Scope;
      public ResourceType ResourceType;
      public ResourceDisplaytype DisplayType;
      public int Usage;
      public string LocalName;
      public string RemoteName;
      public string Comment;
      public string Provider;
  }
  
  public enum ResourceScope : int
  {
      Connected = 1,
      GlobalNetwork,
      Remembered,
      Recent,
      Context
  };
  
  public enum ResourceType : int
  {
      Any = 0,
      Disk = 1,
      Print = 2,
      Reserved = 8,
  }
  
  public enum ResourceDisplaytype : int
  {
      Generic = 0x0,
      Domain = 0x01,
      Server = 0x02,
      Share = 0x03,
      File = 0x04,
      Group = 0x05,
      Network = 0x06,
      Root = 0x07,
      Shareadmin = 0x08,
      Directory = 0x09,
      Tree = 0x0a,
      Ndscontainer = 0x0b
  }
  </code></pre>