2016-07-07 4 views
0

Мне нужно получить доступ к следующей директории, найденной из другого домена, в мою программу C#. Как мне продолжить? Должен ли я использовать метод Impersonate?Доступ к удаленному каталогу из другого домена с помощью C#

string[] files = Directory.GetFiles(@"\\testweb\folder\test", "*.txt"); 

Просьба помочь.

ответ

0

Прежде чем сделать это, вам понадобится программно (если это так, как вы хотите его решить), создайте соединение с доменом с правильным пользователем. Вы можете сделать это с помощью этого класса:

public class MprWrapper 
    { 
     [DllImport("Mpr.dll")] 
     private static extern int WNetUseConnection(
      IntPtr hwndOwner, 
      _NETRESOURCE lpNetResource, 
      string lpPassword, 
      string lpUserID, 
      int dwFlags, 
      string lpAccessName, 
      string lpBufferSize, 
      string lpResult 
      ); 

     struct _NETRESOURCE 
     { 
      public int dwScope; 
      public int dwType; 
      public int dwDisplayType; 
      public int dwUsage; 
      public string lpLocalName; 
      public string lpRemoteName; 
      public string lpComment; 
      public string lpProvider; 
     } 


     public static void WNetUseConnection(string remoteName, string user, string pass) 
     { 
      _NETRESOURCE myStruct = new _NETRESOURCE 
      { 
       dwType = 1, //it's a disk (0 is any, 2 is printer) 
       lpRemoteName = remoteName 
      }; 

      int error = WNetUseConnection(new IntPtr(0), myStruct, pass, user, 0, null, null, null); 
      if (error != 0) 
      { 
       throw new Exception("That didn't work either"); 
      } 
      // if we reach here then everything worked!!! 
     } 
    } 

Вы подключаетесь с

MprWrapper.WNetUseConnection(@"\\DomainAddressHere", @"Domain\User", "Password1"); 

Тогда ваш метод GetFiles будет работать нормально. Это потенциально оставляет открытое соединение (но оно не создает более одного), но в любом случае вы можете создать код для его закрытия, правильно обрабатывать все и т. Д. Это всего лишь отправная точка.

+0

Где я могу создать это соединение? – velvt

+0

@velvt Перед вызовом метода – Gaspa79

 Смежные вопросы

  • Нет связанных вопросов^_^