none
Аутенфикация на сервере в локальной сети RRS feed

  • Вопрос

  • Здравствуйте.

    Нужно выполнить аутенфикацию на сервере с ОС Windows XP в локальной сети под локальной учётной записью администратора. Как мне это сделать средствами платформы .NET?

    Мне нужно получить доступ из программы к ресурсу C$ удалённого компьютера для этого нужно ему как то передать логин и пароль. И вот, я не знаю как.

    Пробовал делать так, как написано в статье http://msdn.microsoft.com/ru-ru/library/yk7437c8.aspx но аутенфикация не проходит и доступа я не получаю.

     

    Заранее большое спасибо.

    16 ноября 2010 г. 16:39

Ответы

  • Большое спасибо за помощь. Материал по ссылке использовать не получилось, зато получилось найти другую функцию и сделать всё попроще. Вот что получилось:

     

    [StructLayout(LayoutKind.Sequential)]
      public struct NETRESOURCE
      {
        public int dwScope;
        public int dwType;
        public int dwDisplayType;
        public int dwUsage;
        public string LocalName;
        public string RemoteName;
        public string Comment;
        public string Provider;
      }
    
      class WinNet
      {
        [DllImport("mpr.dll", SetLastError = true)]
        static extern int WNetAddConnection2(ref NETRESOURCE netResource, string password, string username, int flags);
        static public void Connect(string server, string user, string password)
        {
          NETRESOURCE rc = new NETRESOURCE();
          rc.dwType = 0x00000000;
          rc.RemoteName = server;
          rc.LocalName = null;
          rc.Provider = null;
          int ret = WNetAddConnection2(ref rc, password, user, 0);
        }
    
        [DllImport("mpr.dll", SetLastError = true)]
        static extern int WNetCancelConnection2(string lpName, int dwFlags, bool fForce);
    
        static public void Disconnect(string server)
        {
          int ret = WNetCancelConnection2(server, 0, true); 
        }
    
      }
    
    Теперь методом Connect можно подключиться к серверу в сети, а методом Disconnet отключиться. То что и нужно было.

    • Помечено в качестве ответа Abolmasov Dmitry 17 ноября 2010 г. 9:55
    17 ноября 2010 г. 2:51

Все ответы

  • Статья по ссылке - про web, а не про доступ к сетевым дискам.

    Для передачи логина и пароля к network share можно использовать "net use...", через Process.Start или напрямую через API.

    Пример есть на http://www.msnewsgroups.net/csharp/t4950-service-authenticating-network-fileshare.aspx

    16 ноября 2010 г. 17:38
  • Большое спасибо за помощь. Материал по ссылке использовать не получилось, зато получилось найти другую функцию и сделать всё попроще. Вот что получилось:

     

    [StructLayout(LayoutKind.Sequential)]
      public struct NETRESOURCE
      {
        public int dwScope;
        public int dwType;
        public int dwDisplayType;
        public int dwUsage;
        public string LocalName;
        public string RemoteName;
        public string Comment;
        public string Provider;
      }
    
      class WinNet
      {
        [DllImport("mpr.dll", SetLastError = true)]
        static extern int WNetAddConnection2(ref NETRESOURCE netResource, string password, string username, int flags);
        static public void Connect(string server, string user, string password)
        {
          NETRESOURCE rc = new NETRESOURCE();
          rc.dwType = 0x00000000;
          rc.RemoteName = server;
          rc.LocalName = null;
          rc.Provider = null;
          int ret = WNetAddConnection2(ref rc, password, user, 0);
        }
    
        [DllImport("mpr.dll", SetLastError = true)]
        static extern int WNetCancelConnection2(string lpName, int dwFlags, bool fForce);
    
        static public void Disconnect(string server)
        {
          int ret = WNetCancelConnection2(server, 0, true); 
        }
    
      }
    
    Теперь методом Connect можно подключиться к серверу в сети, а методом Disconnet отключиться. То что и нужно было.

    • Помечено в качестве ответа Abolmasov Dmitry 17 ноября 2010 г. 9:55
    17 ноября 2010 г. 2:51